在不创建新视图或不知道特定父视图的情况下,向UIButton类添加约束



我的应用程序中有一堆按钮,我想对所有按钮使用相同的类(UIButton(。我需要能够在类中同时更改所有约束,其中一些约束将嵌套在不同的父视图中。所有这些都是在Interface Builder中创建的,嵌套在它们自己的UIView中的几个水平和垂直UI堆栈视图

这可能吗?

我本想做这样的事情,但我不知道如何走得更远:

class myButtonClass: UIButton {
required init(coder aDecoder:NSCoder) { super.init(coder: aDecoder)!}

override init(frame:CGRect) {super.init(frame: frame)
setConstraints()
}


func setConstraints() {

let topMarginConstraint = NSLayoutConstraint(item: .self, attribute: NSLayoutConstraint.Attribute.topMargin, relatedBy: NSLayoutConstraint.Relation, toItem: .superview, attribute: NSLayoutConstraint.Attribute.topMargin, multiplier: 1, constant: 2)

//Additional Constraints

self.addConstraints([topMarginConstraint])
}
}

由于各种原因,这不起作用,其中一些错误是因为我不知道如何将以上内容分配给未公开的超级视图(父视图(?

我自己用.superview:解决了这个问题

func setConstraints() {

self.translatesAutoresizingMaskIntoConstraints = false

self.widthAnchor.constraint(equalTo: superview!.widthAnchor, multiplier: 0.8).isActive = true
self.heightAnchor.constraint(equalTo: superview!.heightAnchor, multiplier: 0.8).isActive = true
self.centerYAnchor.constraint(equalTo: superview!.centerYAnchor).isActive = true
self.centerXAnchor.constraint(equalTo: superview!.centerXAnchor).isActive = true
}

相关内容

  • 没有找到相关文章

最新更新