NSTableView scrollRowToVisible з анімацією

Я намагаюся здійснити дію, щоб перейти до верхньої частини NSTableView, а також донизу NSTableView. Я використовую scrollRowToVisible , але я б хотів, щоб дія анімована. Чи є спосіб зробити це?

7

4 Відповіді

Хоча NSTableView не має властивості прокрутки, ви можете безпосередньо анімувати, замість того, щоб трохи математики оживити прокручування NSClipView, в якому живе NSTableView.

Ось як я це зробив (в межах спеціального підкласу NSTableView), щоб плавно анімувати рядок у рядку, щоб прокручувати його до центру перегляду, якщо це можливо:

        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];
22
додано
Виглядає зламаною, принаймні в поєднанні з фільтрами Core Animation і Core Image у Львові. Я намагаюся зробити розмиту прокруткою NSTableView рухом, а вміст не наноситься, прокручуючи більше одного екрана.
додано Автор Ivan Vučica, джерело
Чудово, я спробую це!
додано Автор keegan3d, джерело
Це чудово працювало! Ось останній спосіб, який я придумав, така сама ідея, але дещо інша. Він також миготить панелі прокрутки на Lion: gist.github.com/1558664
додано Автор keegan3d, джерело
Це єдиний код, який надійно прокручував ВСЬОГО шляху до нижньої частини мого NSTableView. Єдине застереження полягає в тому, що він не працює добре з NSDrawNinePartImage (спотворення та глюки зображень). Я закінчив, просто винайшов свій власний дев'ятий метод зображення з NSImageViews, і він працює бездоганно!
додано Автор rocky, джерело
Те саме питання тут. Таблиця залишається порожньою, а потім я бачу, що рядки, розташовані поруч із цільовим рядком, переміщуються на місце. Це схоже на регулярне розташування таблиці під час прокрутки, і він вичерпано, і вичерпано переглядів для переробки.
додано Автор martinjbaker, джерело

Якщо ви націлюєтесь на 10,8+ років, і ви переглядаєте таблицю, ви можете зробити це.

[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
    context.allowsImplicitAnimation = YES;
    [self.tableView scrollRowToVisible:someRow];
} completionHandler:NULL];
12
додано
Працює як чарівність!
додано Автор paulmelnikow, джерело

Простий спосіб не існує, але я підійшов би до нього, підкласувавши NSAnimation, і, коли він проходить від 0.0 до 1.0, помножте це на загальну відстань прокрутки, щоб отримати зсув, і послідовно зателефонуйте scrollToPoint: щоб надати появу гладкої дії прокрутки. Вона повинна працювати в теорії, хоча я не знаю, наскільки добре прокрутка буде співпрацювати.

2
додано
Виклик setBoundsOrigin: 60 разів на секунду фактично дає деякі досить вражаючі результати, коли я почав реалізувати свій власний механізм прокрутки для NSTableView. Дякую за відгук у правильному напрямку.
додано Автор sudo rm -rf, джерело

Це не представляється можливим. NSTableView не підтримує жодної анімації до 10.6. Починаючи з MasOSX10.7, до класу додані деякі прості анімації. Ви можете анімувати вставки, видалення та переміщення рядків на нові позиції. Це так далеко.

2
додано