NSTableView
で独自の列サイズ変更スキームを実装したいと思います。これは主に動作しますが、垂直スクロールバーの動的な外観に苦しんでいます。NSTableViewを使用したカスタムcolumnAutoresizingStyle
2つの列を持つテーブルを作成したいとします。最初の列は常に1/3、もう一方は可視領域の残りの2/3を占めます。
私は次のようにNSTableView
のサブクラスでtile
方法を実装することによって、これを達成しようとしました:
- (void)tile
{
NSClipView *container = (NSClipView*) self.superview;
NSSize spacing = self.intercellSpacing;
CGFloat avail = container.frame.size.width;
CGFloat cw0 = (int) (avail/3);
CGFloat cw1 = avail - cw0;
self.tableColumns[0].width = cw0 - spacing.width;
self.tableColumns[1].width = cw1 - spacing.width;
[super tile];
}
私はスクロールバーが必要に応じて追加されます持っている[super tile]
を呼び出すために持っていると信じています。
ただし、ウィンドウのサイズを変更してTableViewのサイズを変更すると、水平スクロールバーがクリップビューの一部になることがあり、ちらつきが発生することがあります。ここで
は、ウィンドウのサイズを変更するときに私が取得する例を示します。
良い結果:
悪い結果(水平スクロールバーがあるという事実に注意してください):
ウィンドウのサイズを変えずに、テーブルビューでは水平スクロールバーが表示されます。これは私が避けたいものです。
オリジナルのtile
関数がこれをどのように処理するのだろうかと思います。どのように私はそれがちらつきを取得しないように有効にしますが、必要に応じてスクロールバーが表示されますか?
' - [NSTableView] sizeLastColumnToFit'をオーバーライドしますか? – Willeke