繁体   English   中英

应用程序在自定义视图iOS 7.0中的覆盖layoutSubviews方法上崩溃

[英]Application getting crash on overriding layoutSubviews method in custom view iOS 7.0

我正在创建一个自定义视图,并且需要在方向更改时更新其子视图框架。 为此,我要在父视图中覆盖layoutSubviews。

在layoutSubviews中,我要删除以前的约束,并为其子视图添加新的约束。

我打电话给[super layoutSubviews]; 覆盖方法中的first。 它在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中的子视图上添加约束。 还是有其他更好的方法来实现相同的输出。

我认为您没有做错事情。 就像错误地指出的那样,当它尝试对其子视图进行布局时,需要自动布局约束。 因此,在调用[super layoutSubviews] ,应先处理约束条件。

如果我叫[super layoutSubviews]; 修改约束后...在iOS7和iOS8中都可以使用。

那是正确的方法-您应该调用[super layoutSubviews]; 之前修改约束[super layoutSubviews]; 这样,“自动版式”将考虑您更新的约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM