我不确定Apple在iOS 8中的变化,但我的tableview单元格约束现在已被破坏。
他们在iOS 7中运行得很好,单元格出现并且表现得和我预期的完全一样,没有约束冲突来自Xcode的日志消息。
但是在将手机升级到iOS 8并运行我的应用程序后,我得到了约束冲突的Xcode日志消息。
我没有更改我的代码或任何东西。它可能是与iOS 8新的layoutMargins属性相关的东西吗?
还有其他人有同样的问题吗?
希望我不是没有重复现有的问题,如果是的话请关闭。
我的应用程序不使用Interface Builder,一切都是通过代码完成的。
正如我所说的,我没有更改我的单元格的布局代码,它们在运行iOS 7的iPhone 5上运行正常但是只要我在iOS 8 iPhone 5上运行应用程序,相同的代码就会显示约束突然发生冲突:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x14f735b0 V:|-(0)-[UITableViewCellContentView:0x14f6bb60] (Names: '|':NotificationsiPhoneTableViewCell:0x14f6a690'cellID' )>",
"<NSLayoutConstraint:0x14f73610 V:[UITableViewCellContentView:0x14f6bb60]-(0)-| (Names: '|':NotificationsiPhoneTableViewCell:0x14f6a690'cellID' )>",
"<NSLayoutConstraint:0x14f72b80 UserPhotoView:0x14f6c170.top == UITableViewCellContentView:0x14f6bb60.topMargin>",
"<NSLayoutConstraint:0x14f72be0 V:[UserPhotoView:0x14f6c170(37.5)]>",
"<NSLayoutConstraint:0x14f72c20 UITableViewCellContentView:0x14f6bb60.bottomMargin == UserPhotoView:0x14f6c170.bottom>",
"<NSLayoutConstraint:0x14de0260 'UIView-Encapsulated-Layout-Height' V:[NotificationsiPhoneTableViewCell:0x14f6a690'cellID'(76)]>"
)
我再说一遍,当我在iOS 7设备上运行它时,我没有收到这些约束冲突错误消息。
我今天并没有开始学习Autolayout,我已经使用它几个月了,并且知道Autolayout要避免的一些陷阱和问题。我倾向于认为这不是初学者的错误。
好的,我承认。事实上,我在自动布局约束代码中犯了一些错误。
我是一个可怕的骗子。
我查看了我的约束代码并将其全部修复为通知页面。
这个通知页面很简单,现在我需要修复另一个有复杂布局的疯狂的&gt;。&lt;
似乎iOS 8更适合挑选冲突的约束。 竖起大拇指
我希望我可以修复其他页面。