2

我在下面的链接中遵循 Apple 关于使用 UIScrollView 实现自动布局的指南。 http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/index.html

它说,“或者,您可以创建一个视图子树以进入滚动视图,设置您的约束,并调用 systemLayoutSizeFittingSize: 方法(使用 UILayoutFittingCompressedSize 选项)来查找您想要用于内容视图的大小和滚动视图的 contentSize 属性。”

我的问题是,当我打电话时

CGSize newSize = [self.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

newSize 的宽度大于 320。如何约束它以使 newSize 的宽度为 320,因此函数 systemLayoutSizeFittingSize 返回一个很大的高度以适合所有视图?我可以使用不同的参数来代替 UILayoutFittingCompressedSize 吗?

谢谢!

编辑:我有一个 contentView 的 UILabel 子视图,它的 numberOfLines 设置为 0。但是,我看到当我在这个 UILabel 上调用 sizeThatFits 时,它返回的宽度大于 320。因此,self.contentView 方法调用返回一个newSize 大到足以支持 UILabel。

因此,我认为问题出在我的 UILabel 上。如何确保 UILabel 在调用 sizeToFit 时返回小于 320 的宽度,因此仅缩放高度以适合文本正文?

4

1 回答 1

1

找到了解决方案。

UILabel 的名为 preferredMaxLayoutWidth 的属性对我有用。我将它应用到值为320的UILabel上,现在self.contentView方法没有返回大于320的宽度。

有趣的是,UILabel sizeThatFits 方法没有考虑到preferredMaxLayoutWidth,因为它返回的CGSize 仍然具有大于preferedMaxLayoutWidth 的宽度。

于 2013-01-04T23:44:09.650 回答