【问题标题】:iOS 13 - viewDidLayoutSubviews called on changing frameiOS 13 - 在更改框架时调用 viewDidLayoutSubviews
【发布时间】:2020-01-25 10:05:35
【问题描述】:

iOS 13 中的 viewdidlayoutsubviews 中进行了一些更改,这导致它在视图控制器的生命周期后期在完成第一次调用后被调用(在改变框架上)。这在应用程序中产生了一些奇怪的效果。

我观察到的是,在 iOS13 更改帧之前不会调用 viewdidlayoutsubviews,而在新的 iOS 13 中它会被调用。

这是 Apple 的某种新功能还是一些错误?有关如何阻止这种行为的任何建议?

【问题讨论】:

    标签: ios ios13 viewdidlayoutsubviews


    【解决方案1】:

    我只为UIViewController 面临这个问题,它将作为容器视图控制器的子级添加。设备未旋转 - 这些只是在 UIViewController 最初添加到层次结构时将调用的方法:

    iOS 12:

    1. viewDidLayoutSubviews
    2. viewDidAppear

    iOS 13:

    1. viewDidAppear
    2. viewDidLayoutSubviews

    对我来说,这不是一项功能,因此在viewDidAppear 之后调用viewDidLayoutSubviews 是没有意义的(如果设备未旋转)。看起来像是 iOS 13 上的一个错误。

    【讨论】:

    • 我也因此遇到了问题。但是我认为这是某种错误,因为 iOS13 顺序(viewDidAppear 然后 viewDidLayoutSubviews)仅在第一次实例化 ViewController 时发生。我在 NavigationController 场景中,如果我回到调用视图控制器,然后第二次(以及所有后续时间)转发到有问题的 VC,则顺序回到 iOS 12 版本的 viewDidLayoutSubviews,然后是 viewDidAppear。
    猜你喜欢
    • 2015-01-22
    • 2020-02-25
    • 2014-04-24
    • 2014-11-07
    • 1970-01-01
    • 2020-02-12
    • 2020-11-26
    • 2020-01-19
    相关资源
    最近更新 更多