Ios 添加子视图时,自动布局不适用于我的nib
我已经创建了一个xib并将nib加载到我的Ios 添加子视图时,自动布局不适用于我的nib,ios,swift,uiview,Ios,Swift,Uiview,我已经创建了一个xib并将nib加载到我的viewdilayoutsubviews: 然后,我添加了子视图: override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() if (myCustomView == nil) { myCustomView = Bundle.main.loadNibNamed("Help", owner: self, options: nil)?.firs
viewdilayoutsubviews
:
然后,我添加了子视图:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if (myCustomView == nil) {
myCustomView = Bundle.main.loadNibNamed("Help", owner: self, options: nil)?.first as? HelpView
self.view.addSubview(myCustomView!)
}
}
我的约束在我的xib中都设置正确(在设备之间切换看起来不错),但是当我在其他设备上启动应用程序时,自动布局不会更新。我该如何解决这个问题?谢谢大家!
编辑:
为iPhone 7切换,但为iPhone 7 Plus启动
为iPhone 7 Plus切换,为iPhone 7 Plus启动
您的约束可能在nib中设置正确,但在调用self.view.addSubview(myCustomView!)时没有任何约束,因此框架将是nib文件中的任何内容。您需要将myCustomView约束为self.view。给它等宽,中心X,等顶和固定高度(或使用固有高度),它应该是罚款。确保关闭TranslatesAutoResizengMaskintoConstraints。只需在下面添加这一行即可 self.view.addSubview(myCustomView!)
试着在ViewDidAppear中实现它。你能分享你的xib和布局被破坏的设备的屏幕截图吗。。。那不行。。我100%确定我的约束设置正确。不过,我确实意识到,为xib切换正确的设备并启动到同一个设备可以正常工作,但这并不能解决问题。此外,您这里有两个xib。@ankit我添加了屏幕快照我从未以编程方式添加约束,我如何实现这一点?使用NSLAYOUTACHOR并按上述方式设置约束。我举了一个例子:
myCustomView.translatesAutoresizingMaskIntoConstraints = false;
//Views to add constraints to
let views = Dictionary(dictionaryLiteral: ("myCustomView",myCustomView))
//Horizontal constraints
let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|[myCustomView]|", options: nil, metrics: nil, views: views)
self.view.addConstraints(horizontalConstraints)
//Vertical constraints
let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:|[myCustomView(SpecifyFixedHeight)]|", options: nil, metrics: nil, views: views)
self.view.addConstraints(verticalConstraints)