ios - 约束到位后无法在layoutSubviews中设置UILabel#preferredMaxLayoutWidth

标签 ios ios6 uilabel autolayout

当你继承 UIView 时,你最好的做法是什么? 我正在尝试使用新的 ios 6 自动布局完全用代码为 View Controller 创建 View 。 因此,我对 UIView 进行了子类化,并在 #initWithFrame 中设置了基本约束(我应该在 #updateConstraints 中执行此操作吗?)。问题是我有一个带有动态文本和可变宽度的 UILabel,所以我必须在约束确定框架后设置 #preferredMaxLayoutWidth,所以我认为 #layoutSubviews 是执行此操作的最佳位置,但这样做会导致 NSInternalInconsistencyException:执行-layoutSubviews后仍然需要自动布局。 MyView的-layoutSubviews的实现需要调用super。 (运行时错误) 在你问之前,我确定我已经在我重写的每个方法中调用了 super 。 有什么想法吗?

最佳答案

也许你需要的是不要让你的 View 调用[superlayoutSubviews],而是让祖先UIView调用它的[superlayoutSubviews]。

这可以不通过子类化来实现,而是实现一个 UIView 类别,该类别将实现layoutSubViews 函数,调用 super.如果我能得到你的代码我就可以尝试。有人尝试成功here .

同样,这并不能保证问题会得到解决。苹果论坛上似乎有很多与此相关的错误报告。不幸的是,我们无法在Apple门户中浏览其他人的bug,我们只能 file our own .

作为一种解决方法,如果您的任何限制与您的 PreferredMaxLayoutWidth 参数:尝试增加或减少它。根据它自己的最高秩序,它可以改变事情,谁(除了苹果)知道 - 它可能是固定的。手指交叉!

关于ios - 约束到位后无法在layoutSubviews中设置UILabel#preferredMaxLayoutWidth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704469/

相关文章:

ios - 如何将 CUPS 安装到 iOS 设备上?

ios - 使用__IPHONE_7_0并响应toSelector

ios - 我们可以在 iPhone 的同一项目中的两个单独的 .mm 文件中使用两个头文件吗

ios - UILabel 未使用自动布局调整大小

iphone - 在发布消息后保留 View Controller 的计数不等于零

ios - 未经许可或询问访问 iOS 联系人列表 - 隐私问题

ios - 根据swift 3中 TextView 中给出的文本调整标签?

ios - 我怎样才能使新的 UILabel 的默认颜色为黑色(而不是透明的)

ios - 正则表达式在 xcode 中查找和替换...?

iOS8 - 不显示自定义标签栏图像