iOS7中 textField用autolayout发生问题

发布于 2022-09-01 07:16:06 字数 2564 浏览 20 评论 0

开发iOS APP 在iOS8中textField的没问题,约束也正常,换到iOS7的模拟器结果报错
报错信息为Auto Layout still required after executing -layoutSubviews. UITextField's implementation of -layoutSubviews needs to call super.'
界面一共有两个textField,点击任意一个都会触发这个bug,导致程序崩溃.请问应该怎么解决?

另附堆栈信息
*** First throw call stack:
(
0 CoreFoundation 0x000000010cdc5495 exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010c7bb99e objc_exception_throw + 43
2 CoreFoundation 0x000000010cdc531a +[NSException raise:format:arguments:] + 106
3 Foundation 0x000000010c357f19 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
4 UIKit 0x000000010d0dfa3a -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
5 QuartzCore 0x000000010c1f7802 -[CALayer layoutSublayers] + 151
6 QuartzCore 0x000000010c1ec369 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 363
7 QuartzCore 0x000000010c1ec1ea _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
8 QuartzCore 0x000000010c15ffb8 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 252
9 QuartzCore 0x000000010c161030 _ZN2CA11Transaction6commitEv + 394
10 UIKit 0x000000010d07e024 _UIApplicationHandleEventQueue + 10914
11 CoreFoundation 0x000000010cd54d21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION
+ 17
12 CoreFoundation 0x000000010cd545f2 __CFRunLoopDoSources0 + 242
13 CoreFoundation 0x000000010cd7046f __CFRunLoopRun + 767
14 CoreFoundation 0x000000010cd6fd83 CFRunLoopRunSpecific + 467
15 GraphicsServices 0x000000010f42df04 GSEventRunModal + 161
16 UIKit 0x000000010d07fe33 UIApplicationMain + 1010
17 YCPai 0x000000010a863aff main + 111
18 libdyld.dylib 0x000000010e37c5c9 start + 1
19 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Message from debugger: Terminated due to signal 6

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

静水深流 2022-09-08 07:16:06

Auto Layout still required after executing -layoutSubviews. UITextField's implementation of -layoutSubviews needs to call super.
光看错误信息的话 你应该是

- (void)layoutSubviews {
 //    [super layoutSubviews]; 缺少这一行代码   
}
一腔孤↑勇 2022-09-08 07:16:06

把下面这行代码放到layoutSubviews方法最后:
[super layoutSubviews];
或者再末尾添加:
[self layoutIfNeeded];

绿萝 2022-09-08 07:16:06

如果您还在通过代码使用frame进行界面布局,但是对位置计算和屏幕尺寸感到厌烦;如果您在使用AutoLayout进行界面布局,但是对其中的约束难以控制和更新,以及因为约束代码而激增您的代码量;如果您希望您的IOS6版本的应用也需要具备sizeClass的功能;那么就请使用这套布局库:

 https://github.com/youngsoft/MyLinearLayout

这套布局库是以android的线性布局,相对布局,框架布局,表格布局为蓝本。同时又具有IOS的AutoLayout的功能,和部分SIZECLASS功能,以及IOS9中的UIStackView的功能,参考了masonry的一些语法机制,但是他却可以运行在IOS5版本的应用中。使用简单方便,代码清晰,而且少。 并且附带四篇教程文档:

http://blog.csdn.net/yangtiang/article/details/46483999 线性布局
 http://blog.csdn.net/yangtiang/article/details/46795231 相对布局

http://blog.csdn.net/yangtiang/article/details/48011431 表格布局

 http://blog.csdn.net/yangtiang/article/details/46492083 框架布局

 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文