2016-09-24 82 views
1

我有一個在界面生成器中設置爲50x50大小的UIView。Swift 3:錯誤的UIView大小讀取

的觀點是在應用程序加載後,它看起來完全正常,但是當我後,打印出它的大小得到的加載

override func awakeFromNib() { 
    print(self.frame.height) 
} 

返回1000.0

,直到我更新,沒有發生這個錯誤我的項目迅速3.0

任何人都知道什麼可能已經改變?爲什麼打印它的高度返回1000.0,而實際上是50.0?

回答

1

這是因爲UIView在生命週期中沒有設置爲50x50。此時它是1000.0 - 標準尺寸。

圓是:

init  
UIViewController awakeFromNib 
loadView 
UIView awakeFromNib 
UIViewController viewDidLoad 
viewWillAppear 
viewDidAppear 

從此像大小屬性都可以一起工作。

您需要使用layoutIfNeeded屬性及早訪問佈局。

self.layoutIfNeeded() 
layer.cornerRadius = self.frame.height/2.0 
layer.masksToBounds = true 
+0

好的,這就是我在想什麼,但是我應該使用什麼方法然後在UIView實現內部使它正確? – DCDC

+0

你可以通過'self.frame.height = 50'在awakeFromNib中設置高度,以便在 –

+0

之後使用它,或者你使用viewDidAppear之後的高度 –