Man*_*uel 1 uiviewcontroller uiview autolayout swift
视图(a)包含一个子视图(b),该子视图包含一个文本标签。
文本标签的文本设置在viewDidLoad视图(a)中。标签中的文本量会更改子视图(b)的大小。
我仅在视图(a)中获得子视图(b)的正确大小viewDidAppear,而在中没有viewDidLayoutSubviews。
如何在显示视图(a)的视图控制器中获取子视图(b)的大小?
更新:使用自动布局
问题是我在设置文本标签的文本layoutIfNeeded期间viewDidLoad和之前都在打电话。
它强制viewDidLayoutSubviews立即调用该函数,此后不再调用。
这是不好的调用顺序,其中包括子视图的帧高:故事情节板上的空文本标签为163.0,带有文本标签的文本集的为190.5。
viewDidLoad begin: frame.height: 163.0
viewDidLayoutSubviews: frame.height: 161.5 // should not be called yet
viewDidLoad end: frame.height: 161.5
viewWillAppear: frame.height: 161.5
viewDidAppear: frame.height: 190.5
Run Code Online (Sandbox Code Playgroud)
移除后layoutIfNeeded:
viewDidLoad begin: frame.height: 163.0
viewDidLoad end: frame.height: 163.0
viewWillAppear: frame.height: 163.0
viewDidLayoutSubviews: frame.height: 190.5
viewDidAppear: frame.height: 190.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |