2012-02-29 8 views
7

私はウィンドウ内にNSTableViewを持つアプリケーションを持っています。私はウィンドウ全体とテーブルビューの背景としてCALayerを使いたいと思っています。これまでのすべての私の実験では、CALayerは常にNSTableViewを描画しますが、これは私が探している効果ではありません。この作業を行う方法はありますか、NSViewsに対するレイヤーホスティングビューの性質上、私は単に運が悪いのですか?他のNSViewの背景としてCALayerを使用

私のテストセットアップは、通常のNSScrollView/NSTableViewコンボと、その背後にある兄弟NSViewのビュー順のウィンドウです。 NSViewは、その中にカスタムレイヤー(backgroundColorが設定されたレイヤー)を持つレイヤーホスティングに設定されています。私は、ウィンドウのコンテンツビューをレイヤーバックアップに設定し、テーブルビュー自体を設定し、レイヤーバックのNSViewにNSScrollViewをラップしてみました。結果は常に同じです。

ご迷惑をおかけしていただきありがとうございます。

答えて

2

簡単です。オーバーラップするすべてのビューまたはレイヤーは、正しい順序付けのためにレイヤーバッキングまたはレイヤーホスティングにする必要があります。

[tableview setWantsLayer:YES]
と設定するか、インターフェイスを編集するときにレイヤータブで確認するだけです。

+0

これはテストしましたか? NSScrollView/NSTableViewを使った私のテストでは、両方ともレイヤーバックに設定されていますが、CALayerはまだその上に表示されています。 –

+0

初期化後に再配置しようとしましたか? awakeFromNibで?たとえば、addSubviewをスーパービューに正しい順序で送信することができます。スーパービューもレイヤーバックであることを確認してください。 – Remizorrr

関連する問題