Swift 3:错误的UIView大小读取

时间:2016-09-24 10:49:42

标签: ios swift uiview swift3

我有一个在界面构建器中设置为50x50的UIView。

在视图加载到应用程序后,它看起来非常好,但是当我在加载后打印它的大小

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

它返回1000.0

直到我将项目更新为Swift 3.0

之后才发生此错误

有人知道可能会有什么变化吗?为什么打印它的高度返回1000.0而它实际上是50.0?

1 个答案:

答案 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