我在Xcode 8中創建了一個新的OS X項目,添加了一個(圖片)視圖。我將它拖到默認的ViewController源代碼中,添加@IBOutlet(名爲「image」)。然後在viewDidLoad()
,我說:whyLayer = true後,爲什麼圖層是零?
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
是設置wantsLayer
應該立即創建一個layer
?文件似乎暗示了這一點,但我找不到一個明確的說法。
我已經看到了很多代碼,like this,這使得一個的NSView做:
self.wantsLayer = true
self.layer!.backgroundColor = ...
所以它看起來像它應該。爲什麼在設置wantsLayer
後layer
爲零?我是否應該自己設置layer
,即使我要求wantsLayer
?
看到https://www.objc.io/issues/14-mac/appkit-for-uikit-developers/這使得關於如何起訴層支持的一些警告查看圖層對象 – Volker
Volker:漂亮的資源!我從中得到的結論是,所有發佈的代碼實際上都是錯誤的,如果我想在CALayer上設置屬性,我需要使用'wantsUpdateLayer'路徑。 (這解決了我的一個問題,但不是全部。)如果您將其作爲「答案」發佈,我會接受它。 – Naha