具有正确自动布局的 UIView 不会返回正确的内在内容大小。尽管我可以看到它在情节提要中和应用程序运行时的大小都正确,但我得到了 (-1.0, -1.0)。
我尝试创建一个 Playground 来创建 UIView (a) 和 UILabel。我将标签添加为 (a) 的子视图并设置左、右、上、下约束。我还设置了一些文本并验证我的标签具有正确的内在尺寸(确实如此)。我的 (a) 视图返回 (-1.0, -1.0) 作为内在内容大小。
我还尝试使用故事板创建一个新项目。我在视图中添加了一个 UIView (a) 并将其居中(X 和 Y)。我在我的 (a) 视图中添加了一个 UILabel 并约束左、右、上、下。我可以看到 (a) 视图大小正确。当我运行该应用程序时,我发现它的大小仍然正确。我的 (a) 视图返回 (-1.0, -1.0) 作为内在内容大小。
考虑到 UIView 根据其内在内容大小(即子视图和相关约束)进行布局,我发现这非常奇怪。
假设我的标签对 (a) 视图边缘的约束距离均为 0,那么我希望我的 (a) 视图的内在内容大小等于我的标签框架的内在内容大小(基于内在大小)标签,但这有点没有意义)。
我真的不明白视图如何将其框架设置为等于其子元素的固有大小,同时没有固有的内容大小。
((a)视图的框架返回正确的大小,但这并不能真正回答我的问题。另外 - 它对我的特定情况没有帮助,但这超出了这个问题的范围。)