4

NSScrollViewをレイヤーバックビューのサブビューにすると(たとえば、IBからNSTextViewまたはNSTableViewを選択して)、スクロールビューのドキュメントビューに奇妙な描画動作が表示されます。

説明のために、ウィンドウにNSTextViewを使用して簡単なプロジェクトを作成しました。私が書いた唯一のコードは、ウィンドウのコンテンツビューのレイヤーバッキングをオンにすることです。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[self.window contentView] setWantsLayer:YES];
}

これは、テキストビューに入力したときの結果です。赤い下線が正しく整列していません:

http://mowglii.com/random/screenshot.png

また、テキストビューのサイズを変更すると、テキストと下線が大きく揺れます。テキストビューの代わりにテーブルビュー(スクロールビュー内)を使用すると、サイズ変更時に同じジッターが発生します。

何が起こっているのか分かりますか?

4

1 に答える 1

4

NSScrollViewは、レイヤーに裏打ちされたビューに埋め込まれると、実際に正しく動作しません。

スクロールビューを含むビューをアニメーション化するには、いくつかの深刻なトリックが必要です。アニメートする必要がある場合にのみ、レイヤーバッキングをオンにしてみてください。次に、空のレイヤーで終わらないように、描画を強制する必要があります。

ただし、通常は、トリックの裏側をもっと深く調べる必要があります。つまり、レイヤーバッキングをオフのままにします。ビューを画像に描画し、レイヤーバッキングが有効になっているオーバーレイビューにその画像を表示します。そのビューを最終状態の画像にアニメーション化します。次に、オーバーレイビューを削除して、以下の実際の最終状態を表示します。

于 2011-05-02T18:59:32.030 に答える