我会尽量保持简短。我正在使用viewDidLayoutSubviews(主要)将角半径应用于多个UIViewController中的某些视图。对于自定义UIView,也可以在layoutSubviews中进行相同的操作。
在安装Xcode 8 Beta之后,该行为可预期地停止了。有时它可以正常工作,另一些则可以延迟工作,而另一些仍然可以,根本不起作用...
调试时立即发生的一件事是,在第一次调用viewDidLayoutSubviews时,所讨论视图的边界为零。在第二次通话中,范围是正确的;就像我说的,问题是第二个呼叫要么有(可见)延迟,要么根本没有发生。
有指针吗?谢谢大家。
最好,雷纳托。
回答我自己的问题,以防万一有人碰到同样的问题...
据我所知,在iOS 10中,您不能假定在主线程上调用对layoutSubviews,viewDidLayoutSubviews等执行的调用。
因此,答案似乎只是将UI调用包装在分派块上(新的iOS 10 sintax):
DispatchQueue.main.async {
// Do UI stuff here...
}
希望对某人有帮助:)
此致,
雷纳托。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句