iOS 8.4:
在 iOS 9 上完全相同的代码:
如您所见,在 iOS 8.4 上运行完全相同的代码会产生与 iOS 9 不同的结果。
在 iOS 9 上,第二行在第一次加载 View 时显示片刻,然后缩回到其单行状态。这个 View 是一个Header Collection Reusable View。
我尝试删除标题 View 中的所有其他 View 和不相关的约束,同时只留下有问题的标签(带有 3 个约束),但仍然产生类似的结果,因此它不会由 View 中的其他约束引起。
想知道是否有其他人遇到这种情况并知道解决方案?
编辑 1:
UILabel 的配置:
编辑 2:
我在这里创建了一个演示项目:https://github.com/v-ken/TestMultilineUILabeliOS9 .我将问题的根源定位为 reloadData 。当它被调用时,UILabel 缩回到一行。
编辑 3:
上面的演示 GIT 存储库现已更新为修复。
Best Answer-推荐答案 strong>
最终通过在 UIView 中设置 UILabel 的 preferredMaxLayoutWidth 使其适用于 iOS 9。
- (void)layoutSubviews {
[super layoutSubviews];
myLabel.preferredMaxLayoutWidth = myLabel.frame.size.width;
}
或者,如果您使用的是 UIViewController:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
myLabel.preferredMaxLayoutWidth = myLabel.frame.size.width;
[self.view layoutIfNeeded];
}
引用:
https://stackoverflow.com/a/20287811/2491738
关于iOS 9 多行标签在集合可重用标题 View 中具有自动布局功能不起作用,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/33212315/
|