Мне нравится реализовать мою собственную схему изменения размера столбца в NSTableView
. У меня это в основном работает, но борьба с динамическим появлением вертикальной полосы прокрутки.Custom columnAutoresizingStyle с NSTableView
Представьте, что я хочу иметь таблицу с двумя столбцами, в которой первое всегда занимает 1/3, а второе - оставшееся 2/3 видимого пространства.
Я пытался сделать это путем внедрения метода tile
в подклассе NSTableView
следующим образом:
- (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
. Как я могу включить его, чтобы не получить мерцание, но при необходимости появятся полосы прокрутки?
Override '- [NSTableView] sizeLastColumnToFit'? – Willeke