2017-02-10 16 views
1

У меня есть пользовательский NSView, который я установил флаг isEnabled в viewDidLoad, но он не отображается в 0,5 альфа, хотя isEnabled правильно установлен, и правильный код вызывается в drawRect для пользовательского Посмотреть.NSView alpha on viewDidLoad не отображает

Как только я нажимаю текстовое поле в том же контроллере просмотра, изменяется альфа-альфа.

Вот код, называемый в 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', поэтому я только что изменил это, и он отлично работает. Не понял, что альфа не будет правильно обрабатываться в 'drawRect'. – DanM

ответ

1

Настройка альфа в drawRect, как правило, слишком поздно в процессе рендеринга. Если установить альфа, сделайте это до появления drawRect. Возможно, установите альфа в viewDidLoad. Или, лучше, есть didSet для свойства isEnabled, которое устанавливает альфу. Но не делайте этого в drawRect, сам.