2017-02-10 35 views
1

我有一個自定義的NSView我設置的IsEnabled標誌viewDidLoad中,但它不是在0.5阿爾法顯示,即使的IsEnabled正確設置和正確的代碼被稱爲在的drawRect自定義視圖。的NSView阿爾法不顯示

只要我在同一個視圖控制器單擊文本字段中的視圖阿爾法的變化。

這裏稱爲viewDidLoad中

 forceOutput.isEnabled = true 

這裏的代碼是由drawRect中

 // is the view enabled? 
    if isEnabled { 

     // alpha should be full (opaque) 
     self.alphaValue = 1.0 

    } else { 

     // make the view slightly transparent 
     self.alphaValue = 0.5 
    } 
+0

你的先生是一個明星,謝謝。我已經有一個'didSet'這是設置'needsDisplay',所以我只是改變了和它完美的作品。沒有意識到alpha將不能在'drawRect'處理。 – DanM

回答

1

drawRect設置阿爾法調用的代碼通常是在渲染過程爲時已晚。如果設置爲alpha,則在調用drawRect之前執行此操作。也許在viewDidLoad中設置alpha。或者,更好的,有對isEnabled屬性,設置字母一個didSet。但不要在drawRect本身。