Xcode 8で新しいOS Xプロジェクトを作成し、単一の(画像)ビューを追加しました。デフォルトのViewControllerソースにドラッグして@IBOutlet(「image」という名前)を追加しました。その後viewDidLoad()
で、私が追加:wantLayer = trueの後、レイヤーがnilになるのはなぜですか?
image.wantsLayer = true
image.layer!.cornerRadius = 10
、それが正常に動作し、約半分の時間では、それがで死ぬ:
fatal error: unexpectedly found nil while unwrapping an Optional value
二行目で指しながら、とでデバッガ:
(lldb) po image.wantsLayer
true
(lldb) po image.layer
nil
はすぐlayer
を作成することになっwantsLayer
を設定していますか?ドキュメントはこれを示唆しているようですが、これを明示的にする声明を見つけることはできません。私はNSViewのを作る多くのコード、like thisを、見てきました
は行います
self.wantsLayer = true
self.layer!.backgroundColor = ...
ので、それはそれがあるべきように思えます。 wantsLayer
を設定した後にlayer
がゼロになるのはなぜですか?私がwantsLayer
を求めても、自分でlayer
を設定するはずですか?
が担保層を訴える方法に関するいくつかの警告を与えるhttps://www.objc.io/issues/14-mac/appkit-for-uikit-developers/を参照してくださいビューのレイヤーオブジェクト – Volker
Volker:素敵なリソース!私がこれから得ているのは、投稿したコードをすべて実際に間違っていることと、CALayerでプロパティを設定したい場合は 'wantsUpdateLayer'パスを使用する必要があるということです。 (それは私の問題のうちの1つを解決しますが、すべてではありません)あなたが「回答」としてそれを投稿すれば、私はそれを受け入れます。 – Naha