Ios 添加子视图时,自动布局不适用于我的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

我已经创建了一个xib并将nib加载到我的
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)