次のようなビュー階層があります。

つまり、基本的に、スクロールビュー(テーブルビュー用)を含むサブビューと、3つのサブビューを含むフッタービューを備えたNSSplitViewがあります。注意すべきいくつかの重要なこと:
- 10.8ベースSDKを使用し、自動レイアウトはありません
- ウィンドウコンテンツビュー、分割ビュー、スクロールビューとフッタービューの親ビュー、およびスクロールビューとフッタービューはすべて、NSViewContentsRedrawOnSetNeedsDisplay再描画ポリシーでレイヤーバックされます。
- の
NSClipViewは、ビューをホストするレイヤーであり、バッキングレイヤーとしてを使用NSScrollViewする特別なサブクラスです。CAScrollLayer - カラービューは、背景色が設定されたシンプルなレイヤーバックビューです。
- 背景ビューは、contentsプロパティが画像に設定されたサブレイヤーを持つレイヤーホスティングビューです( contentsCenterも設定されています)
- コンテンツビューは、単一のサブビュー、カスタムレイヤーバックボタンビュー(NSButtonではない)を含むレイヤーバックコンテナビューです。
- フッタービューは、スクロールビューと約3ピクセル重なっています。
このレイアウトではかなり不安定な動作になります。これが私が得ている3つの異なるシナリオであり、アプリを起動するたびにランダム化されます。
1)すべてが正常に表示されます。背景ビューとすべてのコンテンツがあります:

2)ボタンは正常に表示されますが、背景ビューは部分的に透明に見えます。

3)背景ビューは正しく表示されますが、ボタンが消えています。

これらの各シナリオ間で変更されるコードはまったくありません。アプリを停止して再度実行します。実行時に不透明度に関連するものを変更しないようにしました。実行時に行うのは、ビューの背景色と画像を設定することだけです。
編集:重複するビューが問題を引き起こしている可能性があると感じたので、重複せずにテストして同じ結果を得ました。
編集2:これはzPosition、レイヤーに裏打ちされたビューのレイヤーの問題のようです。順序はスクランブルされ、ランダムです。レイヤーのzPositionを手動で強制してサブビューの順序に一致する正しい値にすると、すべてが正常になります。残念ながら、これを行うためのよりクリーンな方法は、を設定するだけでは見つかりませんzPosition。