2017-12-28 14 views
2

私はコードをオンラインで追跡することでラウンド1を作るためにサブクラス化するNSButtonです。しかし、私のサブクラスの中では、layerは常にnilです。ビュー内のすべてのレイヤーが最初はnilに設定されているのはなぜですか?

私はtrueNSViewwantsLayerプロパティを設定する必要がある層のプロパティを設定するために、例えばNSViewために、あまりにも他のコンポーネントの同様の挙動を発見しました。オンライン

@IBInspectable 
var shadowOpacity: Float { 
    get { 
     return layer.shadowOpacity 
    } 
    set { 
     layer.shadowOpacity = newValue 
    } 
} 

私のコード

サンプルコード、コンソールで

@IBInspectable 
var shadowOpacity: Float { 
    get { 
     print(layer?) 
     return layer.shadowOpacity 
    } 
    set { 
     layer.shadowOpacity = newValue 
    } 
} 

私のコードが印刷さnil

デフォルトでwantsLayertrueに設定する方法はありますか?

答えて

2

あなたはカスタムクラスにNSButtonデフォルトの初期化子をオーバーライドし、そこtruewantsLayerを設定する必要があります。

required init?(coder: NSCoder) { 
    super.init(coder: coder) 

    wantsLayer = true 
} 

override init(frame frameRect: NSRect) { 
    super.init(frame: frameRect) 

    wantsLayer = true 
} 
関連する問題