"Auto Layout still required after executing -layoutSubviews” iOS7上崩溃sdk缺陷

在iOS7系统上,我项目工程里写了一个CinemaMemberView,添加到一个viewController中,结果崩溃了。iOS8和iOS6上则不会崩溃。

Terminating app due to uncaught exception ‘NSInternalInconsistencyException‘, reason: ‘Auto Layout still required after executing -layoutSubviews. CinemaMemberView‘simplementation of -layoutSubviews needs to call super.‘

*** First throw call stack:

(

0   CoreFoundation                      0x073cf1e4 __exceptionPreprocess + 180

1   libobjc.A.dylib                         0x070848e5 objc_exception_throw + 44

2   CoreFoundation                      0x073cf048 +[NSException raise:format:arguments:] + 136

3   Foundation                              0x04fc54de -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116

4   UIKit                                         0x05466a38 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 567

5   libobjc.A.dylib                         0x0709682b -[NSObject performSelector:withObject:] + 70

6   QuartzCore                              0x06df545a -[CALayer layoutSublayers] + 148

7   QuartzCore                              0x06de9244 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380

8   QuartzCore                              0x06de90b0 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26

9   QuartzCore                              0x06d4f7fa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294

10  QuartzCore                             0x06d50b85 _ZN2CA11Transaction6commitEv + 393

11  QuartzCore                             0x06e0e5b0 +[CATransaction flush] + 52

12  UIKit                                        0x05414ce5 _afterCACommitHandler + 131

13  CoreFoundation                     0x0739736e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30

14  CoreFoundation                     0x073972bf __CFRunLoopDoObservers + 399

15  CoreFoundation                     0x07375254 __CFRunLoopRun + 1076

16  CoreFoundation                     0x073749d3 CFRunLoopRunSpecific + 467

17  CoreFoundation                     0x073747eb CFRunLoopRunInMode + 123

18  GraphicsServices                   0x0906d5ee GSEventRunModal + 192

19  GraphicsServices                   0x0906d42b GSEventRun + 104

20  UIKit                                         0x053f7f9b UIApplicationMain + 1225

21  SOHUVideoHD                        0x0000d649 main + 121

22  libdyld.dylib                             0x0805a6d9 start + 1

23  ???                                           0x00000001 0x0 + 1

)

CinemaMemberView的layoutSubviews是这样的:

-(void)layoutSubviews{
    [super layoutSubviews];
    if (self.layoutType == ECinemaViewType_Wide_button) {
        [self layoutWideType];
        [self layoutWideTypeOnlyButton];
    }else if (self.layoutType == ECinemaViewType_Wide_logo){
        [self layoutWideType];
        [self layoutWideTypeOnlyLogo];
    }
    else {
        [self layoutNarrowType];
    }
}

解决办法是,将super layoutSubviews放到layoutSubviews的最后,问题是解决了,但真正崩溃的原因还不明确。

-(void)layoutSubviews{
    /*逻辑代码*/
    ...
    /*逻辑代码*/
    [super layoutSubviews];
}

参考这里

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 11:18:53

"Auto Layout still required after executing -layoutSubviews” iOS7上崩溃sdk缺陷的相关文章

ios7和ios6下Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.崩溃

崩溃信息: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.' 系统:ios6&ios7  (ios8下面没事,不开启

Auto Layout 使用心得

此系列文章代码仓库在 https://github.com/johnlui/AutoLayout ,有不明白的地方可以参考我的 Auto Layout 设置哦,下载到本地打开就可以了. 简介 Auto Layout 是苹果在 Xcode 5 (iOS 6) 中新引入的布局方式,旨在解决 3.5 寸和 4 寸屏幕的适配问题.屏幕适配工作在 iPhone 6 及 plus 发布以后变得更加重要,而且以往的“笨办法”的工作量大幅增加,所以很多人开始学习使用 Auto Layout 技术. 初体验 0.

Auto Layout— 实现等分

Auto Layout 的本质原理 Auto Layout 的本质是用一些约束条件对元素进行约束,从而让他们显示在我们想让他们显示的地方. 约束主要分为以下几种(欢迎补充): 相对于父 view 的约束.如:距离上边距 10,左边距 10. 相对于前一个元素的约束.如:距离上一个元素 20,距离左边的元素 5 等. 对齐类约束.如:跟父 view 左对齐,跟上一个元素居中对齐等. 相等约束.如:跟父 view 等宽. 等分设计思路 许多人刚开始接触 Auto Layout,可能会以为它只能实现上

iOS7 自动布局 入门–Auto Layout

目前为止,即使你的界面设计是在合理的复杂度内,你也必须要为之写许多代码来适应变化的布局.现在我相信你会很高兴听到这种情况将不会发生了-对于iPhone与iPad IOS6 带来了一个非常了不起的特征:自动布局. 自动布局不仅能给你的应用带来各种屏幕尺寸设计的支持,做为额外的惊喜,它还能使设计中的各种小事比如多语言环境支持.你从此不必再为你想要支持的各种语言重新设计nibs和storyboards文件,当然这也包括一些从右至左书写的语言比如说希伯来文和阿拉伯语. 这篇教程将向你展示的是如何开始使用

iOS 7 - Auto Layout on iOS Versions prior to 6.0

链接地址:http://stackoverflow.com/questions/18735847/ios-7-auto-layout-on-ios-versions-prior-to-6-0 Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required. iOS 7 - Auto Layout on

Auto Layout Guide----(三)-----Anatomy of a Constraint

Anatomy of a Constraint 剖析约束 The layout of your view hierarchy is defined as a series of linear equations. Each constraint represents a single equation. Your goal is to declare a series of equations that has one and only one possible solution. A samp

iOS 使用LayoutGuide 来限制控件的位置,配合Auto Layout constraints

UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [self.view addSubview:button]; [button setTranslatesAutoresizingMaskIntoConstraints: NO]; // 得到当前视图的最低基准限制,这个是对于Auto Layout constraint来说的. id bottomGuide = self.bottomLayoutGu

转////iOS 8 Auto Layout界面自动布局系列1-自动布局的基本原理

iOS 8 Auto Layout界面自动布局系列1-自动布局的基本原理 http://blog.csdn.net/pucker/article/details/41832939 标签: iosinterface苹果布局界面 2014-12-10 00:25 11286人阅读 评论(2) 收藏 举报  分类: iOS开发(19)  版权声明:本文为博主原创文章,未经博主允许不得转载. 苹果今年如约放出了新的iPhone 6与iOS 8系统,SDK针对新的设备和系统的界面适配也进行了若干改进,因此

iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画

首先感谢众多网友的支持,最近我实在是事情太多,所以没有写太多.不过看到大家的反馈和评价,我还是要坚持挤出时间给大家分享我的经验.如果你对我写的东西有任何建议.意见或者疑问,请到我的博客留言: http://blog.csdn.net/pucker 好了,言归正传.本系列的前几篇文章讲解了自动布局的原理,以及如何添加约束.这篇文章主要介绍以下内容: 某些用户控件具有自身内容尺寸约束 使用视图调试工具在运行时查看和调试程序界面视图层次.尺寸和自动布局约束 创建约束的对象关联 通过修改约束的常量值.删