UIView的使用将自动布局约束
问题描述:
我加载我的NIB文件,以我的观点后,不符合父约束容器。这仅在向uiview添加自动布局后才会发生。我已经检查,最初的框架尺寸为600x600。UIView的使用将自动布局约束
即使尝试通过调用layoutSubviews()来重置NIB大小,并将新的框架约束放在它中仍然拒绝调整大小。例如:
override func layoutSubviews() {
// self.frame.size.width = 300
//self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: 200, height: self.frame.height)
}
答
看看这篇文章here。看看第三个技巧,它展示了如何创建一个从笔尖加载的视图。将代码复制到下面(声明它是写在斯威夫特2):
@IBDesignable
class ProfileView: UIView {
@IBOutlet var imgView: UIImageView!
@IBOutlet var labelOne: UILabel!
@IBOutlet var labelTwo: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setUp()
}
func setUp() {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: “Profile”, bundle: bundle)
let viewFromNib = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
addSubview(viewFromNib)
viewFromNib.translatesAutoresizingMaskIntoConstraints = false
self.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
“H:|[v]|”,
options: NSLayoutFormatOptions(rawValue: 0),
metrics: nil,
views: [“v”:viewFromNib]
)
)
self.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
“V:|[v]|”,
options: NSLayoutFormatOptions(rawValue: 0),
metrics: nil, views: [“v”:viewFromNib]
)
)
}
}
一旦你拥有了它的代码和笔尖设置正确,你应该能够很容易地对其进行初始化。无论是在界面生成器或代码:
//视图控制器
override viewDidLoad() {
super.viewDidLoad()
self.addSubview(ProfileView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)))
}
的岗位在哪里? – Allreadyhome
对不起,我添加了链接。 – DerrickHo328