2017-04-11 98 views
0

我在UIView's控制器上有UIButtonUIButton的位置是從UIView的頂部10像素,從另一個UILabel的10像素,這是從UIView的尾部位置20像素。 UIButton & UILabel具有相同的高度和寬度。該視圖是在自動佈局模式下設計的。如何在自動佈局中獲取UIButton位置查看

按鈕&標籤在UIView's控制器的位置

UIView 

    -> `UIButton`, `UILabel` 

------------------------------ 
|     |   | 
|    10   | 
|     |   | 
|    B - 20 - L | 
|       | 
------------------------------ 

的UIButton在ViewDidLoad方法檢索到的位置是不正確的,因爲它反映初始位置從XIB但視圖被加載後的按鈕位置將被改變爲正在使用自動佈局。

讓我知道如何檢索UIButton位置(x & y),一旦顯示UIView

viewdidload方法如下,

- (void) Viewdidload() { 

    [UIView addSubview:object1]; 
    --- 
    [UIView addSubview:object2]; 
} 

感謝。

+1

'viewDidLayoutSubviews()'是一個很好的地方,您可以獲得正確的按鈕座標,即使在旋轉或視圖佈局的任何後續更改之後。 –

+0

@AdilSoomro,viewDidLayoutSubviews()將被添加或刪除的每個子視圖都會調用。在我的情況下,這個方法被調用了幾次,我可以觀察到UIButton位置的不同值。 – user2071152

+1

理想情況下,您不會在'viewDidLayoutSubviews()'中添加新視圖,而只需根據需要設置其框架或座標。 –

回答

0

在生命週期viewDidLoad()被調用時,視圖不是(自動)佈局版。

獲取viewDidAppear()viewWillAppear()的排名。

+2

viewDidLayoutSubviews()可能是更好的選擇 – picciano

+0

@picciano爲什麼它更好? – shallowThought

+0

它可能在大部分時間都有效,但viewDidAppear只會被調用一次,也許在之後對layoutSubviews的調用中執行額外的佈局之前。如果佈局再次執行(例如方向更改或添加其他子視圖),它也不會再次調用。 – picciano