【发布时间】:2020-08-18 10:55:07
【问题描述】:
如果我的应用在 iPad 上加载全屏,自动布局约束适用。
当我进入分屏时,一切都按预期改变。
当分屏大小发生变化时,调用- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator方法。
但是,如果我在分屏中加载应用程序,约束从一开始就不正确。
此外,当调整到全屏以外的任何内容时,- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator 不会被调用。
这是一个演示问题的视频。 https://www.youtube.com/watch?v=ksHt8pIz0b0
我正在使用 Masonry 来安装约束,如下所示:
[labelLeft remakeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.left);
make.centerY.equalTo(self.view.centerY);
make.width.equalTo(150);
make.height.equalTo(30);
}];
[labelRight remakeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.view.right);
make.centerY.equalTo(self.view.centerY);
make.width.equalTo(150);
make.height.equalTo(30);
}];
[labelTop remakeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.view.centerX);
make.top.equalTo(self.view.top);
make.width.equalTo(150);
make.height.equalTo(30);
}];
[labelBottom remakeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.view.centerX);
make.bottom.equalTo(self.view.bottom);
make.width.equalTo(150);
make.height.equalTo(30);
}];
提前感谢您的帮助!
更新:
我构建了一个新的应用程序并安装了相同的约束。当我运行相同的测试场景时,它在分屏模式下加载正常。
但是,在测试场景中,在分屏加载后更改屏幕大小时正确调用了viewWillTransitionToSize:。
关于在分屏加载时可能会阻止在我的应用中调用它的任何想法?该应用程序很大,所以我正在寻找一般的搜索方向。
【问题讨论】:
-
请编辑您的问题以包含minimal reproducible example,特别是展示您如何创建约束
标签: ios objective-c xcode autolayout