2017-10-04 44 views
1

我不知道爲什麼,當我創建這個觀點:爲什麼我們不需要在聲明自定義視圖時使用「框架」?

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的任何事嗎?

回答

3

UIView具有己沒有參數一個默認初始。不管子類UIView與否,該初始化程序都可用。它使用CGRect.zero的幀初始化UIView實例。

+0

因爲它是從nsobject繼承? –

3

您正在調用從UIView實現繼承的便利初始值設定項。這個無參數的便利初始值設定程序會調用帶有框架的初始值並將其傳遞給默認值 - 最後,您的初始值設定項frame將從繼承的超類初始值設定項中調用。

+0

但是它在哪裏找到這個框架? –

+1

它會自動使用CGRect.zero。 –

相關問題