2015-06-25 3 views
0

Here, you can see the section header buttons as "TEST HEADER"Как анимировать ячейки с помощью UIButton?

Я хочу свернуть все ячейки внутри раздела. Я хочу сделать это, нажав кнопку, которую я добавил в заголовок раздела. Очевидно, с анимацией. Не просто исчезает. У меня есть идея, что, если бы я мог просто получить индексный путь раздела, так как у меня есть постоянное количество ячеек внутри каждого раздела, я могу создать оператор switch для анимации ячеек с соответствующими индексами.

ответ

1

1: назначить действие с заголовком представления (я уверен, что есть делегат обратный вызов для секции крана, в противном случае добавить TapGesture к представлению заголовка)

2: если вы используете автоматическую раскладку одушевленных ограничения высоты tabvleView иначе frame.height tableView

Есть ли эффективный способ? Может UITableView имеет расстыковки встроенную функцию в :)

+0

Можете ли вы объяснить второй шаг или дать мне некоторые ссылки на учебники или что-то еще? Буду признателен. –

+0

Я бы добавил два tableView в этом ViewController. TestHeader будет кнопкой, которая оживляет высоту таблицы. – Jaro

0

Так что, если вы используете AutoLayout (и вы должны, потому что это здорово), то анимация допустим UIView * contentView будет выглядеть следующим образом:

IBOutlet NSLayoutConstraint *contentViewHeightConstraint; 

подключить этот выход в Interface Builder с учетом высоты изображения contentView.

Если вы не знаете, contranits и autolayout, затем YouTube и практику в течение 2 недель :)

- (void)moveViewsUp { 
    [contentView setNeedsUpdateConstraints]; 

    int delta = 100; 

    [UIView animateWithDuration:ANIM_DURATION 
        animations: ^{ 
     contentViewHeightConstraint.constant = -delta; 
     [contentView layoutIfNeeded]; 
    } 
     completion: ^(BOOL finished) { 
    }]; 
} 

- (void)moveViewsDown { 
    [contentView setNeedsUpdateConstraints]; 

    [UIView animateWithDuration:ANIM_DURATION 
        animations: ^{ 
     contentViewHeightConstraint.constant = 0; 
     [contentView layoutIfNeeded]; 
    } 
    completion: ^(BOOL finished) { 
    }]; 
} 
1

Я думаю, что добавление пользовательских анимации для расширения/разрушения строк следующим UITableViewDelegate FUNC может работать ...

опционально FUNC Tableview (Tableview: UITableView, willDisplayCell клетки: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)

Кроме того, следующая ссылка обеспечила хорошее решение для скрытия представление таблицы клеток/строк ...

How to display and hide table view cells in swift

Успехов!

3

Вы можете использовать блок beginUpdates/endUpdates. Вы помещаете изменения в свой TableView, который вы хотите оживить в этом блоке. (Не называйте [tableView reloadData] внутри блока, хотя.)

Например, вы пишете что-то вроде этого в заголовке раздела обработчике кнопки Tap:

[self.tableView beginUpdates]; 
[self.tableView deleteRowsWithIdexPaths:indexPathsToDelete 
         withRowAnimation:UITableViewRowAnimationTop]; 
[self.tableView endUpdates]; 

С помощью этого кода строки с индексами indexPathsToDelete отпадет с UITableViewRowAnimationTop анимации, но вы можете изменить тип анимации в зависимости от ваших потребностей.

Для получения дополнительной информации см. WWDC2010 Video «Освоение стола», особенно демонстрация, начиная с 17:40.

+0

Я пишу целое число для indexPath, но это не позволяет мне делать. Я пытаюсь вызвать эту функцию внутри действия кнопки. –

+0

'indexPathsToDelete' - массив указательных путей, поэтому он должен быть примерно таким:' @ [[NSIndexPath indexPathForRow: 0 inSection: 0], [NSIndexPath indexPathForRow: 1 inSection: 0]] ' – Anastasia

Смежные вопросы