NSTableView - старается уместить ровно 9 строк - PullRequest
2 голосов
/ 02 марта 2011

Я пытаюсь изменить размер строк NSTableView, чтобы они соответствовали ровно 9 строкам.Я пробовал [menuTableView setRowHeight:floor(menuRect.size.height / 9)]; и пробовал [menuTableView setRowHeight:(menuRect.size.height / 9)]; и [menuTableView setRowHeight:ceil(menuRect.size.height / 9)];, но все они имеют одну и ту же проблему: если я выбрал строку 0, то строка 9 обрезается внизу, а если я выбираю строку 9, тострока 0 обрезана вверху.

Как настроить NSTableView для отображения 9 полных строк, чтобы независимо от того, какой части строки не видно,

Спасибо,

edit : Да menuRect - это рамка для menuTableView

edit :

Ниже приведен полный метод, который я использую для позиционирования NSTableView иустановить высоту строки, которую я пытался устранить при округлении с помощью переменной rowHeight.С прикрепленным снимком экрана видно, что последний ряд отображается не полностью

- (void) updateGUIPositions
{
    NSRect screenRect = [self frame];
    NSRect menuRect;

    // Set the menu location on screen
    NSInteger spacer =  screenRect.size.width / 9;
    menuRect.size.width = floor(screenRect.size.width - (spacer * 3)) / 2;
    menuRect.size.height = ceil(screenRect.size.height - (spacer * 2));
    NSInteger rowHeight = menuRect.size.height / 9;
    menuRect.size.height = rowHeight * 9;
    menuRect.origin.x = menuRect.size.width + (spacer * 2);
    menuRect.origin.y = spacer;
    [menuScrollView setFrame:menuRect];

    // Setup the row height
    [menuTableView setRowHeight:rowHeight];
}

enter image description here

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Я не уверен, будет ли это работать, но это звучит как ошибка округления (у меня была такая же проблема с UITableView).Попробуйте увеличить высоту кадра NSTableView на 1 пиксель.Итак, menuTableView.frame.height = menuTableView.frame.height+1;

РЕДАКТИРОВАТЬ Попробуйте использовать это ...

`float rowHeight = menuRect.size.height / 9.0f;`
0 голосов
/ 21 октября 2011

Если вы можете исправить размер строк и вместо этого установить программным образом размер кадра, этот связанный вопрос предполагает, что эта формула работает:

numRows * (rowHeight + intercellSpacing.height)

Используя эту формулу,скроллер нарисует, но вы можете просто выключить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...