带有自动布局的 iOS 9 多行标签在集合可重用标题 View 中不起作用

原文 标签 ios autolayout ios9 xcode7

iOS 8.4:
Multi-line label works in iOS8.4
在 iOS 9 上完全相同的代码:
Multi-line label doesn't work in iOS9
如您所见,在 iOS 8.4 上运行完全相同的代码会产生与 iOS 9 不同的结果。
在 iOS 9 上,第二行 显示一秒钟 当第一次加载 View 和 然后收缩回来 到它的单行状态。此 View 是 Header Collection 可重用 View .
我尝试删除标题 View 中的所有其他 View 和不相关的约束,同时只留下有问题的标签(有 3 个约束),但仍然产生类似的结果,因此它不可能是由 View 中的其他约束引起的。
All other views removed, still same results
想知道是否还有其他人遇到过这种情况并知道解决方案吗?
编辑 1:
UILabel 的配置:
Attributes
Layouts
编辑2:
我在这里创建了一个演示项目:https://github.com/v-ken/TestMultilineUILabeliOS9 .我找到问题的根源是reloadData .当它被调用时,UILabel缩回到单行。
编辑 3:
上面的演示 GIT 存储库现在已更新为修复程序。

最佳答案

最后通过设置 UILabel 使其适用于 iOS 9的 preferredMaxLayoutWidth在 UIView 中。

- (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/

相关文章:

ios - iOS8中自动布局的问题

ios - 如何居中对齐UICollectionView中的项目?

ios - 随着 iOS 13 的发布, "Sign in with Apple"是强制性的

ios - UICollectionViewCells 周围的间距相等

swift2 - iOS 9中的WKWebView问题

objective-c - iOS9 - UITableViewCellContentView 掩盖了 Cell 内的控件

ios - 如何定期获取位置并将位置发送到后台ios9中的服务器

iphone - 为什么这段代码使用presentModalViewController? (不是 pushViewController)

ios - uiimageview自动布局问题

ios - 处理iPhoneX的自定义标签栏