gpt4 book ai didi

ios - 自动布局横向和纵向模式的不同约束

转载 作者:行者123 更新时间:2023-11-29 01:12:49 26 4
gpt4 key购买 nike

我使用 Masonry 库来帮助以编程方式添加约束。很好,但现在我面临的问题是,在用户将设备从横向旋转到纵向后,我需要卸载并添加新的约束。我尝试了相当“残酷”的解决方案,它确实改变了约束,但是,在几分之一秒内我就可以看到“旧”约束。用户旋转设备后是否有简单的方法来添加/删除约束?这就是我尝试过的(它有效,但正如我上面所描述的,在几分之一秒内我可以看到“旧”帧):

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
[bottomRight mas_updateConstraints:^(MASConstraintMaker *make) {

NSLog(@"We are on landscape");
make.top.equalTo(upperRight.mas_bottom).with.offset(20);
make.left.equalTo(self.view.mas_centerX).with.offset(20);
make.right.equalTo(bottomRightRight.mas_left).with.offset(-20);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-100);

make.width.equalTo(bottomRightRight);

}]; }
else {
NSLog(@"Swapped");
[bottomRight mas_updateConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(upperRight.mas_bottom).with.offset(200);
make.left.equalTo(self.view.mas_centerX).with.offset(200);
make.right.equalTo(bottomRightRight.mas_left).with.offset(-200);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-200);

make.width.equalTo(bottomRightRight);

}];

}

}

最佳答案

i need to uninstall and add new constraints after user rotate device from landscape to portrait. I tried rather "brutal" solution, it did change constraints, but, in fraction of second i could see "old" constraints.

但这就是问题所在:您正在用户旋转设备后更改约束。所以 是导致您不喜欢的现象的人,即这种情况发生在旋转结束后 的几分之一秒。

正确的解决方案是在用户旋转设备之前更改约束。如果这样做,约束的变化将神奇地动画化以匹配旋转,并且变化将看起来绝对无缝。

例如,如果这是一个 iPhone 应用程序,您可以实现 View Controller 的 willTransitionToTraitCollection...并在那里进行约束更改,更改将神奇地与旋转相匹配。

关于ios - 自动布局横向和纵向模式的不同约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com