NSTableView scrollRowToVisible с анимацией - PullRequest
8 голосов
/ 28 октября 2011

Я пытаюсь реализовать действие для прокрутки к верхней части NSTableView и нижней части NSTableView.Я использую scrollRowToVisible, но мне бы хотелось, чтобы действие было анимированным.Есть ли способ сделать это?

Ответы [ 4 ]

22 голосов
/ 13 декабря 2011

Хотя NSTableView не имеет свойства прокрутки, которое вы можете напрямую анимировать, вместо этого вы можете с небольшой математической анимацией прокрутить NSClipView, в котором живет NSTableView.

Вот как я это сделал(в пользовательском подклассе NSTableView) для плавной анимации строки в rowIndex для прокрутки к центру представления, если это возможно:

        NSRect rowRect = [self rectOfRow:rowIndex];
        NSRect viewRect = [[self superview] frame];
        NSPoint scrollOrigin = rowRect.origin;
        scrollOrigin.y = scrollOrigin.y + (rowRect.size.height - viewRect.size.height) / 2;
        if (scrollOrigin.y < 0) scrollOrigin.y = 0;
        [[[self superview] animator] setBoundsOrigin:scrollOrigin];
13 голосов
/ 19 августа 2015

Если вы нацеливаетесь на 10.8+, а ваше табличное представление имеет слой с поддержкой, вы можете сделать это:

[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
    context.allowsImplicitAnimation = YES;
    [self.tableView scrollRowToVisible:someRow];
} completionHandler:NULL];
2 голосов
/ 28 октября 2011

Простого пути нет, но я бы подошел к нему, используя подклассы NSAnimation, и по мере его продвижения от 0,0 до 1,0 умножьте это на общее расстояние прокрутки, чтобы получить ваше смещение, и последовательно вызовите scrollToPoint: чтобы создать видимостьпрокрутка действий.Это должно работать теоретически, хотя я не уверен, насколько хорошо будет работать прокрутка.

2 голосов
/ 28 октября 2011

Это не представляется возможным. NSTableView не поддерживает никакой анимации до 10.6. Начиная с MasOSX10.7, в класс добавлено несколько простых анимаций. Вы можете анимировать вставку, удаление и перемещение строк на новые позиции. Вот и все.

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