为什么我们不需要在声明自定义视图时使用“框架”?

问题描述:

我不知道为什么,当我创建这个观点:为什么我们不需要在声明自定义视图时使用“框架”?

class MenuBar: UIView { 
    override init (frame: CGRect) { 
     super.init(frame: frame) 
     backgroundColor = UIColor.blue 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

...而当另一个类使用它,我,我可以把一些像这样的代码:

let menuBar: MenuBar = { 
    let mb = MenuBar() 
    return mb 
}() 

何不我不得不提到关于frame的任何事吗?

UIView具有己没有参数一个默认初始。不管子类UIView与否,该初始化程序都可用。它使用CGRect.zero的帧初始化UIView实例。

+0

因为它是从nsobject继承? –

您正在调用从UIView实现继承的便利初始值设定项。这个无参数的便利初始值设定程序会调用带有框架的初始值并将其传递给默认值 - 最后,您的初始值设定项frame将从继承的超类初始值设定项中调用。

+0

但是它在哪里找到这个框架? –

+1

它会自动使用CGRect.zero。 –