由于Autolayout限制,应用程序在iOS8 beta4和beta5中崩溃

时间:2014-08-05 06:43:17

标签: ios8

应用程序崩溃在iOS8 beta4中,当我为NSLayoutAttributeLeading和NSLayoutAttributeLeft属性之间的视图设置NSLayoutConstraints时。

当我们为所述组合的视图添加约束时,会发生这种情况。

NSLayoutAttributeLeading and NSLayoutAttributeRight
NSLayoutAttributeTrailing and NSLayoutAttributeRight
NSLayoutAttributeLeading and NSLayoutAttributeLeft

这套代码在iOS7.0中运行良好,仅在iOS8 beta4和beta5中崩溃。

这是一个问题吗?或者我们不应该像我的描述中提到的那样设置约束。 如果有人遇到同样的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

理论上,NSLayoutAttributeLeading和NSLayoutAttributeLeft对于从左到右的语言模式是相同的。但对于像阿拉伯语这样的RTL语言,NSLayoutAttributeLeading实际上意味着正确。这就是为什么你不应该尝试构造约束NSLayoutAttributeLeading& NSLayoutAttributeTrailing with Left&对。在iOS 7中它不会崩溃,但在这种情况下,iOS 8似乎变得更加严格。

虽然以下两种方法都有效并导致类似行为,但第二种方法会在iOS8中崩溃(我检查的最后一次是在测试版5中) // iOS8方式(在iOS7中正常工作)

[NSLayoutConstraint constraintWithItem:view属性:NSLayoutAttributeLeft relatedBy:relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeLeft multiplier:1 constant:10.0f]

// iOS7方式(可能在iOS8中崩溃)

[NSLayoutConstraint constraintWithItem:view属性:NSLayoutAttributeLeading relatedBy:relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeLeft multiplier:1 constant:10.0f]

由于