iOS 9 multi-line 带有自动布局的标签在 collection 可重用 header 视图中不起作用
iOS 9 multi-line label with autolayout in a collection reusable header view not working
iOS 8.4:
iOS9 上的完全相同的代码:
如您所见,运行 在 iOS 8.4 上的完全相同的代码会产生与 iOS 9.
不同的结果
在 iOS 9 上,第二行 在第一次加载视图时 显示一瞬间 然后缩小 到它的单行状态。此视图是 Header Collection 可重用视图.
我尝试删除 header 视图中的所有其他视图和不相关的约束,同时只留下有问题的标签(有 3 个约束),但仍然产生类似的结果,所以它不可能是由其他约束引起的在视图中。
想知道是否还有其他人遇到过这种情况并且知道解决方案?
编辑 1:
UILabel 的配置:
编辑 2:
我在这里创建了一个演示项目:https://github.com/v-ken/TestMultilineUILabeliOS9。我找到问题的根源是reloadData
。调用时,UILabel
缩回到单行。
编辑 3:
上面的演示 GIT 存储库现已更新为修复程序。
通过在 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];
}
参考:
iOS 8.4:
iOS9 上的完全相同的代码:
如您所见,运行 在 iOS 8.4 上的完全相同的代码会产生与 iOS 9.
不同的结果在 iOS 9 上,第二行 在第一次加载视图时 显示一瞬间 然后缩小 到它的单行状态。此视图是 Header Collection 可重用视图.
我尝试删除 header 视图中的所有其他视图和不相关的约束,同时只留下有问题的标签(有 3 个约束),但仍然产生类似的结果,所以它不可能是由其他约束引起的在视图中。
想知道是否还有其他人遇到过这种情况并且知道解决方案?
编辑 1:
UILabel 的配置:
编辑 2:
我在这里创建了一个演示项目:https://github.com/v-ken/TestMultilineUILabeliOS9。我找到问题的根源是reloadData
。调用时,UILabel
缩回到单行。
编辑 3:
上面的演示 GIT 存储库现已更新为修复程序。
通过在 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];
}
参考: