gpt4 book ai didi

ios - iPad 多任务根据 Storyboard 中的自动布局激活/停用约束

转载 作者:行者123 更新时间:2023-11-28 21:00:52 24 4
gpt4 key购买 nike

在应用程序运行时,我有时会更改 Storyboard 中设置的某些约束的 active 属性以隐藏/显示某些 View 。

一切正常,但如果应用程序从一种尺寸过渡到另一种尺寸(改变特征,例如当用户在 iPad splitview 上调整应用程序大小时(屏幕上有两个应用程序)),所有约束都会从 Storyboard返回到它们的初始状态。 (当应用占据屏幕的一半并调整大小以占据屏幕的 50% 以上时发生。iOS 11)

例如如果在 Storyboard 中约束是事件的,稍后在运行时,我会停用它,在拉伸(stretch)应用程序后(当应用程序是 iPad 上的 splitview 的一部分时)它会再次激活。

这是错误还是功能?如何防止这种情况发生?再次激活/停用这些约束的最佳回调方法是什么?

最佳答案

如果您可以选择在代码中而不是在 Storyboard中创建这些可修改的约束,我认为这是最好的解决方案。如果没有,请使用以下方法。


我决定在我的 View Controller 中使用 traitCollectionDidChange: 方法。调用此方法时约束不会更改,因此我创建了一个标志,该标志将在特征集合更改后调用的 viewDidLayoutSubviews 方法中使用。当 viewDidLayoutSubviews 被调用时,约束已经改变,所以我们可以根据需要重新配置它们。

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
[super traitCollectionDidChange:previousTraitCollection];
if (previousTraitCollection) _traitsCollectionDidChange = YES;
}

- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];

if (_traitsCollectionDidChange) {
_traitsCollectionDidChange = NO;

// reconfigure your constraints
}
}

关于ios - iPad 多任务根据 Storyboard 中的自动布局激活/停用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011288/

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