创建此视图时,我不明白为什么:
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
的任何内容?
答案 0 :(得分:3)
您正在调用从UIView
实现继承的便捷初始值设定项。这个无参数的便利初始化程序调用带有框架的那个并向其传递一个默认值 - 最后,从继承的超类初始化程序调用带有frame
的初始化程序。
答案 1 :(得分:3)
UIView
有默认初始值设定项,其无参数。无论是否对UIView
进行子类化,该初始化程序都可用。它初始化UIView
实例,其框架为CGRect.zero
。