【问题标题】:viewWillTransitionToSize: vs willTransitionToTraitCollection:viewWillTransitionToSize:与 willTransitionToTraitCollection:
【发布时间】:2015-10-27 20:19:04
【问题描述】:

谁能解释这两种方法之间的区别? The docs for UIViewController 明确声明 viewWillTransitionToSize 应该用于管理旋转,但是点击到 UIContentContainer pagewillTransitionToTraitCollection 方法会让人感到困惑。

我想我理解大小类更改(特征集合更改)和大小更改之间的概念差异,但我不确定在哪种情况下实施哪种方法。 UIKit 向导的说明会很有帮助!

【问题讨论】:

    标签: ios uiviewcontroller rotation uikit


    【解决方案1】:

    当您想要对用户旋转设备做出响应时,您应该使用viewWillTransitionToSize,如果您这样做了,那么您肯定会执行您的操作,因为每次您的应用程序的窗口改变大小时都会调用它。

    如果您只想在 trait 集合发生更改时采取行动,例如,如果您为 Compact 大小类设置了某个 collectionViewLayout,而您想为 Regular 使用另一个 willTransitionToTraitCollection

    如果特征集合发生变化,那么大小也会发生变化。但反过来也行不通。纵向 iPad 和横向 iPad 具有相同的特征,但尺寸不同。将多任务添加到组合中,您将拥有多种尺寸,只需映射到两个 traitCollection 尺寸类。

    【讨论】:

    • 我想问,为了在设备旋转发生时有不同的布局,我们更新willTransitionToTraitCollection而不是traitCollectionDidChange中的约束,对吧?还是没关系?
    • 对于旋转,您将在viewWillTransitionToSize 中更新,取决于设备,当设备旋转时您可能不会获得新的特征集合。例如,iPad 全屏应用在两个方向上都是 Regular/Regular
    • 那么viewWillTransitionToSizewillTransitionToTraitCollection有什么区别?什么时候使用一个而不是另一个?
    • 我现在看到 viewWillTransitionToSize 没有给我关于下一个 traitCollection 的信息,所以我不能 - 例如 - 知道我是否在 iPhone 设备中从纵向旋转到横向。所以在这种情况下我应该使用willTransitionToTraitCollection,对吧?
    猜你喜欢
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多