ビュー階層にルート ビューを追加する前に、ビュー階層のルート ビューがレイヤーでサポートされていることを確認してください。
例。これは機能します。macOS 10.12 Sierra で動作確認済みです。Xcode 8.0。
split.view.wantsLayer = true
window.contentViewController = split
split.splitViewItems = [
NSSplitViewItem(viewController: vc),
]
しかし、これはそうではありません。
window.contentViewController = split
split.splitViewItems = [
NSSplitViewItem(viewController: vc),
]
split.view.wantsLayer = true
ここで何が起こっているのか、なぜこれが機能するのかわかりません。しかし、推測させてください。
NSWindow
レイヤーバッキングのないルートビューは、コンポジターを使用せずに単純に描画します。そのため、コーナーをマスクすることができず、そのようなアーティファクトが表示されます。それらをレイヤーでバックアップするだけで機能します。@Eugeneが指摘したように。
すべてをレイヤーベースにすることは難しくありません。ルート ビューをレイヤーでサポートするようにするだけで、階層内のすべてのサブビューがリーフでレイヤーでサポートされます。(詳細は RTFM: CALayer.wantsLayer
.)