我有自定义的 UILabel,它在 iOS6 和 iOS7 上运行良好.但是在 iOS8 上,这个标签的 (void)layoutSubviews 方法永远不会被调用.我用 initWithFrame 创建了这个标签,所以应该调用这个方法 - 它在另一个 iOS 版本上被调用.iOS8 中的 autoLayout 系统会发生什么?
I have custom UILabel which works fine on iOS6 and iOS7. But on iOS8 this label's (void)layoutSubviews method never get called. I create this label with initWithFrame, so this method should be called - and it's called on another iOS versions. What happens with autoLayout system in iOS8?
我只想添加这个答案,因为问题标题可能会导致很多人在这里遇到类似的问题(比如我).
I just want to add this answer because the question title may lead a lot of ppl here with similar issues (like me).
iOS 8 到 8.0.2 LayoutSubviews
调用不可靠.它们可能永远不会被调用,或者(在我的情况下)被循环调用.
With iOS 8 to 8.0.2 LayoutSubviews
calls are unreliable. They may not be called ever or (in my case) are called in a loop.
即使您不应该这样做,在 LayoutSubviews 中分配内容也是相当安全的,但是这种错误 (?!) 行为可能会导致难以追踪的错误.
Even though you should not do it, it was pretty safe to alloc stuff in LayoutSubviews, but with this buggy (?!) behaviour it can cause hard-to-trace bugs.
我不知道 8.1 是否解决了所有问题,但客户设备运行 8.1 并且他们现在确实运行 8.0.2 还需要一段时间
I don't know if 8.1 fixes all the issues but it will be some time until customer devices will run 8.1 and they do run 8.0.2 NOW
这篇关于Xcode6、iOS8 和 (void)layoutSubviews的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!