2011-08-02 8 views
1

Snow LeopardとLionの両方でよく見えるようにInterfaceBuilder(XCode 4)でNSScrollViewを設定する際に問題が発生しました。Snow LeopardとLionのNSScrollViewの動作(NSScrollerの透過性)

プログラムを使用するときにアクセスする必要のあるコントロールを含む4つのNSViewがあります。 NSScrollViewのビューの内側にビューを配置しています。NSScrollViewは、ウィンドウが小さくてすべてを表示するようになると、垂直スクロールバーを表示する必要があります。 (ビューは、唯一のカスタマイズとして[customView isFlipped] == YESを返すカスタムビューです)

NSScrollViewは、プログラムウィンドウの高さを垂直に自動サイズ設定に設定されています。スクロールビュー内のカスタムビューは、NSScrollViewの幅で水平方向に自動サイズ設定されます。 NSScrollViewは垂直スクロールバーを表示し、内容が完全に表示されたら自動的に非表示にします。

この設定では、すべてSnow Leopardでうまく動作します。しかし、私がLionを使用するとき、垂直スクロールバーはカスタムビューの上に表示されませんが、右側の不透明な灰色のバーの中に表示されます。これは、スクロールバーが表示されていないときにスクロールバーが非表示になっているために、スクロールバーが隠れているときに消えません。私はカスタムビューの幅全体に及ぶいくつかの要素を持っているので、これは本当にプロフェッショナルではないように見え、ウィンドウ境界から15ポイントを停止します。 カスタムビューの幅をNSScrollViewの幅(1つのNSScrollerの幅に対して+ 15pt)に設定すると、これをLionで正しく動作させることができますが、垂直スクロールバーの場合はビューがSnow Leopardで水平方向にスクロールします表示されています。 両方のシステムで正しく見えるようにする方法はありますか?

私はSnow Leopard 10.6 SDKとLeopard 10.5を最低限のOSとしてコンパイルしています。

答えて

2

[NSScrollerクラス]のpreferredScrollerStyleを確認し、ゼロでない場合(実際にはNSScrollerStyleLegacyですが、SDK 10.6では使用できません)、上記のようにビューを拡大します。また、SDK 10.7でのみ追加されているため、スクロールクラスがそのセレクタに応答するかどうかをチェックしてください(performSelectorで呼び出すこともできます)。 また、isCompatibleWithOverlayScrollersをオーバーロードしてfalseを返すNSScrollerのカスタム子孫を使用することもできます。ライオンにも幅15ptのレガシースクロールがあります。

関連する問題