【发布时间】:2017-04-11 14:01:25
【问题描述】:
我在UIView's 控制器上有一个UIButton。 UIButton 的位置距离 UIView 顶部 10 像素,距离另一个 UILabel 10 像素,距离 UIView 的尾随位置 20 像素。 UIButton 和 UILabel 都具有相同的高度和宽度。视图以自动布局模式设计。
按钮和标签在UIView's控制器中的位置
UIView
-> `UIButton`, `UILabel`
------------------------------
| | |
| 10 |
| | |
| B - 20 - L |
| |
------------------------------
在ViewDidLoad 方法中检索到的 UIButton 的位置不正确,因为它反映了 xib 的初始位置,但是在加载视图后,按钮位置将随着使用自动布局而改变。
告诉我如何在显示UIView 后检索UIButton 位置(x & y)。
viewdidload方法如下,
- (void) Viewdidload() {
[UIView addSubview:object1];
---
[UIView addSubview:object2];
}
谢谢。
【问题讨论】:
-
viewDidLayoutSubviews()是一个很好的地方,即使在旋转或视图布局发生任何后续更改之后,您也可以获得按钮的正确坐标。 -
@AdilSoomro, viewDidLayoutSubviews() 将为添加或删除的每个子视图调用。在我的情况下,这个方法被调用了几次,我可以观察到 UIButton 位置的不同值。
-
理想情况下,您不会在
viewDidLayoutSubviews()中添加新视图,而是根据需要简单地设置它们的框架或坐标。 -
请注意 ViewWIllAppera 是获得自动布局的最佳位置。 viewDidLayoutSubviews 也被 ViewWillAppear 调用,但不是每次都调用。在设备旋转时,只有 viewDidLayoutSubviews() 被调用。
标签: ios objective-c ios-autolayout