2015-05-18 2 views
0

У меня есть UITableViewCell, который использует автоматическую компоновку. Когда пользователь выбирает ячейку, я хочу отобразить дополнительную информацию в представлении деталей, которое скользит вниз, расширяя нижнюю часть ячейки.Анимировать просмотр подробных сведений в UITableViewCell

У меня возникли проблемы с определением правильного пути для этого.

Метод transitionFromView:toView:duration:options:completion: не подходит, потому что я не заменяю один вид другим.

Метод transitionWithView:duration:options:animations:completion: выглядел так, будто он должен делать трюк, но я не могу понять правильный способ достижения своих целей, используя его.

Это то, что я пытался сначала (C#, но Objective-C/Swift эквиваленты должны быть очевидны):

private void AnimateDetailsIntoView() 
{ 
    this.detailsView.Hidden = true; 

    this.ContentView.ConstrainLayout(() => 
     this.detailsView.Top() == this.nameLabel.Bottom() && 
     this.detailsView.Bottom() == this.ContentView.Bottom() - Layout.StandardSiblingViewSpacing && 
     this.detailsView.Left() == this.nameLabel.Left() && 
     this.detailsView.Right() == this.nameLabel.Right()); 

    this.AddSubview(this.detailsView); 

    UIView.Transition(
     this, 
     0.2, 
     UIViewAnimationOptions.ShowHideTransitionViews | UIViewAnimationOptions.TransitionFlipFromBottom, 
     () => { }, 
     () => { }); 
} 

Это приводит к ячейке таблицы "Spinning Around", но детали смотреть не на самом деле показать. Даже если я удалю строку, которая скрывает detailsView, я все еще не вижу ее после анимации.

Я подозреваю, что это связано с расположением, но я не уверен, как «вырастить» ячейку по вертикали.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

PS. Я понимаю, что еще нужно сделать, как только я получу начальную анимацию. Мне нужно будет оживить любую ранее выбранную ячейку и удалить ее панель сведений.

+0

Это значит, что вы хотите расширить ячейку uitableview? – Vizllx

+0

@Vizllx: да. Когда пользователь выбирает ячейку, она расширяется вниз, чтобы показать детали. –

ответ

0

В соответствии с ОП хочет развернуть и свернуть ячейку, следующие процедуры, чтобы достичь этого: -

  1. Дизайна всей детали ячейки в одной ячейке прототипа.
  2. В настоящее время tableView heightForRowAtIndexPath: укажите 2 размера один для сглаживания ячейки и другой размер для (расширенной) подробной ячейки, предоставив условие что-то вроде переменной BOOL «isExpanded».
  3. Теперь на didSelect таблицыView или в действии кнопки, если вы используете кнопку в ячейке, просто сохраните значение indexpath.row, чтобы определить, какую строку развернуть и добавить этот код, чтобы перезагрузить строку, это легко сделает анимацию трюк развернуть

[tbl beginUpdates];

[tbl reloadRowsAtIndexPaths: indexPaths withRowAnimation: UITableViewRowAnimationBottom];

[tbl endUpdates];

  1. То же самое касается разваливания ячейки, просто некоторые логические настройки, которые вы можете легко сделать.
+0

Это не работает для меня, потому что вызов reload в 'didSelect' предотвращает запуск' didDeselect''. Поэтому я не могу отменить эффект, и выбранные ранее выбранные строки остаются выбранными. –

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