你好 iOS 程序员。在创建应用程序时,我遇到了一个我似乎无法找到答案的问题。让我们把它摆出来:
我正在创建一个带有 UIScrollView 的 UIViewController,因为它是唯一的孩子。在这个视图里面我有一个 UIView,里面有一个 UIViews 列表,里面有 UILabel。众所周知,您需要为 UIScrollView 指定 contentSize。问题是列表需要与它的内容是动态的,因此我无法事先知道视图高度。我正在添加所有具有约束的视图,其中高度设置为“> = 0”。当我稍后尝试设置 UIScrollView 的高度时,我需要获取列表所在的 UIView 的高度,或者获取列表中最后一个视图的 origin.y 和高度。这当然需要在视图显示给用户时准备好。
我目前试过view.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize),它返回0;view.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize),返回10000;和 view.origin.y + view.frame.height,它也返回 0。在我看来,约束还没有生效。
我尝试从 viewDidLoad() 设置约束和 UIScollView.contentSize。我还尝试在 viewDidLoad 中设置约束并在 viewWillAppear 中设置 contentSize;这产生了相同的结果。在 viewWillAppear 中设置约束和在 viewDidLoad 中设置 contentSize 只会导致崩溃。
底线:如果我想获得 view.height 或类似方法以返回正确的结果,我应该什么时候设置 UIScrollView.contentSize ,同时在用户看到视图时准备好?
顺便说一句,我正在用 Swift 制作这个应用程序,所以最好用这种语言回答,但我可以从 Objective-C 翻译成 Swift;以最适合您的方式发布。
谢谢!:)