2

我会尽量保持简短。我正在使用viewDidLayoutSubviews(主要)将角半径应用于几个UIViewController中的某些视图。也在layoutSubviews中为自定义UIView做同样的事情。

安装Xcode 8 Beta后,这停止了可预测的行为。有时它可以工作,其他人延迟工作,其他人仍然,根本没有......

调试时立即发生的一件事是,在第一次调用viewDidLayoutSubviews时,所讨论的视图的边界为零。在第二次调用时,界限是正确的;问题是,正如我所说,第二次通话要么有(可见的)延迟,要么根本不会发生。

任何指针?谢谢大家。

最好的,雷纳托。

4

1 回答 1

1

回答我自己的问题,以防万一有人遇到同样的问题......

据我所知,在iOS 10中,您不能假设在layoutSubviewsviewDidLayoutSubviews等上执行的调用将在主线程上调用。

所以答案似乎只是将 UI 调用包装在一个调度块上(新的iOS 10 sintax):

DispatchQueue.main.async {
        // Do UI stuff here...
        }

希望它对某人有帮助:)

此致,

雷纳托。

于 2016-07-27T13:47:33.100 回答