我正在尝试构建一个可重用的UIView
,其宽度应该等于Swift中的superview。
由于其超级视图的大小不同,我认为我必须使用自动布局为其设置约束。
但我无法弄清楚如何在Swift中以编程方式执行此操作。
以下是可重用子视图的代码:
import UIKit
class bottomMenu: UIView {
@IBOutlet var bottomMenu: UIView!
required init(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
NSBundle.mainBundle().loadNibNamed("bottomMenu", owner: self, options: nil)
bottomMenu.backgroundColor = UIColor.redColor()
//How to make the width of the bottom Menu equal to its superview?
self.addSubview(self.bottomMenu)
}
}
有谁能告诉我如何制作它?
由于
答案 0 :(得分:2)
您可以在UIView子类中使用override didMoveToSuperview()
方法并在那里添加约束:
override func didMoveToSuperview() {
super.didMoveToSuperview()
backgroundColor = UIColor.redColor()
let views = ["view" : self];
self.setTranslatesAutoresizingMaskIntoConstraints(false)
self.superview?.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|[view]|", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
self.superview?.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[view]|", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
}
答案 1 :(得分:0)
为里面的元素添加约束。对于每个元素,添加顶部,底部,左侧和右侧的约束。如果您有任何需要相同尺寸的图像,请添加宽度和高度。如果您可以发布UIView的屏幕截图,我将添加更多信息,并且能够提供更多帮助。
如果您不熟悉autolayout,请查看http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1。
答案 2 :(得分:0)
以下代码为加载的视图提供与超级视图相同的高度和宽度。 (不确定你想要的高度)
bottomMenu.setTranslatesAutoresizingMaskIntoConstraints(false)
//Views to add constraints to
let views = Dictionary(dictionaryLiteral: ("bottomMenu",bottomMenu))
// Horizontal constraints
let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|[bottomMenu]|", options: nil, metrics: nil, views: views)
self.addConstraints(horizontalConstraints)
// Vertical constraints
let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|[bottomMenu]|", options: nil, metrics: nil, views: views)
self.addConstraints(verticalConstraints)