【发布时间】:2015-09-03 19:51:00
【问题描述】:
我正在创建一个自定义视图,并且需要在方向更改时更新其子视图框架。为此,我将覆盖父视图中的 layoutSubviews。
在 layoutSubviews 中,我正在删除以前的约束并向其子视图添加新的约束。
我首先在覆盖方法中调用[super layoutSubviews];。它在 iOS8 以后运行良好,但在 iOS 7.0 及以下 iOS8 上崩溃。
在日志中收到以下消息
Terminated due to uncaught exception 'NSInternalInconsistencyException' reason Auto layout still required after executing layoutSubviews. Parent view's layoutSubviews needs to call super.
如果我在修改约束后调用[super layoutSubviews];,即最后在 layoutSubviews 中,它在 iOS7 和 iOS8 中都可以工作。
我的问题是覆盖 layoutSubviews 的正确方法是什么。
我做错了吗?
我们是否应该在 layoutSubviews 中对子视图添加约束。 或者是否有更好的方法来实现相同的输出。
【问题讨论】:
标签: ios objective-c ios-autolayout