[英]How to get the height of a view that has been stretched by constraints? - iOS
我有以下视图层次结构:
根的高度和宽度已受约束条件(上,下,前导,尾随)拉伸,并且应约为500。子项的高度也受约束条件设置,因此其高度也应等于500。
一切在视觉上看起来都很好,但是当我访问孩子的frame.bounds.height时,它将返回整个屏幕的高度,而不是估计的500。更糟糕的是,当我在Rootview上访问frame.bounds.height时,返回0,因为我已将框架设置为.Zero。
现在我的问题是,如何从已被约束拉伸的视图中获取宽度和高度? 在我看来.frame.bounds不适用于自动布局。
展示柜:
print("collectionView height: ", String(describing: collectionView.frame.height) )
简历高度:0.0
CollectionView是棕色视图:
我的主要目标是制作一个与棕色collectionView一样大的单元格。 但这失败了,因为我无法获得动态大小的collectionView的宽度。
根据评论,看来我帮助解决了这个问题。 它取决于视图控制器的“生命周期”,以及“什么时候知道”帧”。
缩写的生命周期是:
一个简单的检查-使用控制台和/或断点-将显示以下内容:
viewDidLoad
知道界限,但它不知道框架。 viewWillLayoutSubviews
可以知道帧,但它也被称为(通常情况下)不止一次。 -
viewDidLayoutSubviews`而*可能多次调用,是一帧大小的“保证书”的最早时刻。 我被要求将其发布为答案,但是我正在这里寻找更好的资源。 我发现了两个- 两者都是同一个问题的一部分。
前三个答案都很好(我更希望第三个答案能最好地回答这个问题。)
对于此问题,必须知道何时可以确定帧大小。 viewWillLayoutSubviews
可能可行,但如果可行, viewDidLayoutSubviews
是最佳选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.