iOS - 约束是否引用不同视图层次结构中的项目?这是非法的

时间:2016-07-12 05:17:29

标签: ios objective-c ipad ios-autolayout

我使用class sizes为iPhone和iPad制作了不同的布局(我将Any-Any布局留空了)。包括Regular-Compact在内的iPhone的布局工作正常,但我遇到的问题是iPad的布局。

我为iPad横向制作了Regular-Any版面,为iPad肖像制作了Any-Regular

我对横向和纵向约束使用两个IBOutletCollections并将它们应用为

if (_needsiPadConstraintsApplied) {      
        if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
            [NSLayoutConstraint deactivateConstraints:self.iPadLandscapeConstraints];
            [NSLayoutConstraint activateConstraints:self.iPadPortraitConstraints];           
        } else {
            [NSLayoutConstraint deactivateConstraints:self.portraitConstraintsIPad];
            [NSLayoutConstraint activateConstraints:self.landscapeConstraintsIPad];
        }
        _needsiPadConstraintsApplied = NO;
    }

但是当我使用iPad运行我的项目时,我的应用程序正在终止

错误:

  

由于未捕获的异常终止应用程序' NSGenericException',   原因:'无法使用项目激活约束>和   < _UILayoutGuide:0x7f9a1b62a9e0; frame =(0 0; 0 0); hidden = YES;   layer =>因为他们没有共同的祖先。是约束   不同视图层次结构中的参考项目?这是非法的。'

我已经尝试了很多解决方案,但一切都不适合我。

1 个答案:

答案 0 :(得分:0)

您可以使用尺寸类轻松地将横向设置为纵向模式,而不需要任何代码用于所有方向。 只需查看Video link

以及这些。

谢谢。