首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPad多任务根据情节提要中的自动布局激活/停用约束

问iPad多任务根据情节提要中的自动布局激活/停用约束
EN

Stack Overflow用户
提问于 2018-02-27 22:41:08
回答 2查看 194关注 0票数 0

在应用程序运行时,我有时会更改在故事板中设置的一些约束的active属性,以隐藏/显示一些视图。

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

例如,如果在故事板中约束是活动的,稍后在运行时,我会停用它,在拉伸应用程序(当应用程序是iPad上拆分视图的一部分时)之后,它会再次激活。

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

EN

回答 2

Stack Overflow用户

发布于 2018-02-27 23:19:12

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

我决定在我的视图控制器中使用traitCollectionDidChange:方法。当调用viewDidLayoutSubviews时,约束已经更改,因此我们可以根据需要重新配置它们。

代码语言:javascript
复制
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    [super traitCollectionDidChange:previousTraitCollection];
    if (previousTraitCollection) _traitsCollectionDidChange = YES;
}

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    if (_traitsCollectionDidChange) {
        _traitsCollectionDidChange = NO;

        // reconfigure your constraints
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-02-27 23:00:38

根据来自苹果的以下文档

Adopting Multitasking Enhancements on iPad

当用户移动分隔符时,系统使用applicationWillResignActive:协议方法调用您的应用程序委托对象。

我还发现了另外一点,如下所示

通过实现UITraitEnvironment和UIContentContainer协议中的方法来响应性状收集和大小变化。

是当用户尝试更改大小时触发的方法

我将建议阅读该文档以了解有关这方面的更多细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49011288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档