我已经创建了一个圆形按钮,这是一个自定义UIView.Here的代码:
class HelpTips: UIView {
weak var hotSpot: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
let strongHotSpot = UIButton()
hotSpot = strongHotSpot
self.addSubview(strongHotSpot)
hotSpotOne.translatesAutoresizingMaskIntoConstraints = false
hotSpotOne.backgroundColor = UIColor.TRLMHelpTipYellowColor()
hotSpotOne.layer.borderColor = UIColor.TRLMHelpTipStrokeColor().CGColor
hotSpotOne.layer.borderWidth = 1
let horizontalConstraint = NSLayoutConstraint(item: hotSpot, attribute: .Leading, relatedBy: .Equal, toItem: self, attribute: .Leading, multiplier: 1.0, constant: -1)
let verticalConstraint = NSLayoutConstraint(item: hotSpot, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1.0, constant: 16)
let widthConstraint = NSLayoutConstraint(item: hotSpot, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 40)
let heightConstraint = NSLayoutConstraint(item: hotSpot, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 40)
self.addConstraints([verticalConstraint, horizontalConstraint, widthConstraint, heightConstraint])
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
现在,在整个应用程序中,在几个地方使用了相同的按钮,但它被放置在不同的位置。因此每个View Controller都将使用该UIView。 因此从技术上讲,按钮的外观保持不变,但该按钮的约束会根据其位置不断变化。我想在这里遵循DRY(不要重复自己)技巧。 我以前做过这种事情,但代码重复了几次并且效率不高。怎么去这个? 任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
您可以创建自定义导航控制器并将视图存储为其中的属性。每个视图控制器都可以访问导航控制器,因此他们只需引用您需要使用视图的属性和时间。应该保持干燥。
答案 1 :(得分:0)
使用xib创建自定义视图。将您的UIButton添加为子视图。
This教程会有所帮助。