Как я могу перевернуть iOS UITableViewCell?

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

У меня есть отдельная ячейка таблицы XIB для каждого из двух возможных состояний ячеек, а cellForRowAtIndexPath предоставляет правильный XIB (с другим идентификатором ячейки) в зависимости от того, должна ли ячейка находиться в обычном представлении или в представлении детали / редактирования. Это прекрасно работает с использованием, например, reloadRowsAtIndexPaths, чтобы отразить измененное состояние при нажатии кнопки «i».

Но я просто не могу понять, как оживить флип, когда нажата кнопка «i». Flipping не является одним из вариантов «withRowAnimation» в reloadRowsAtIndexPaths. И использование стандартного подхода к анимации, такого как UIView animateWithDuration, не работает: reloadRowsAtIndexPaths просто заставляет соответствующую ячейку перезагружать мгновенно, игнорируя инструкции анимации. Я даже попытался использовать drawViewHierarchyInRect, чтобы отобразить будущее состояние ячейки как изображение, но я не мог заставить ячейку перерисовывать себя достаточно быстро, чтобы ее подхватил drawViewHierarchyInRect (и я не хочу, чтобы пользователь действительно видел результат анимации перед анимацией).

Кто-нибудь имеет представление о том, как с этим справиться?

РЕДАКТИРОВАТЬ

Подводя итог, проблема, с которой я сталкиваюсь, заключается в следующем: есть ли другой способ обмена содержимым ячейки UITableView с другим UITableViewCell Xib, помимо reloadRowsAtIndexPaths (который разбивает анимацию), не вызывая проблем с IBOutlets нового Xib? (Загрузка его в виде Nib в подзаголовок, похоже, нарушает IBOutlets.) Ответы до сих пор не рассматривались.

Это будет сложно, если вы используете два подкласса UITableViewCell , вместо этого используйте один подклассифицированный UITableViewCell и, например, выполните флип-анимацию,

пусть xib содержит подкласс UITableViewCell в своем contentView, добавляя два представления

  1. нормальный вид
  2. Перевернутый вид

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

введите описание изображения здесь

в приведенном выше представлении сначала один View-FlipView и его ярлык и кнопка содержимого, а второй – также такие же, как и первый вид, верхний вид должен быть нормальным
подключите действия кнопки к ячейке, и вы просто выполните, как показано ниже в пользовательской ячейке

  //flip the view to flipView - (IBAction)flipButtonAction:(UIButton *)sender { [UIView transitionWithView:self.contentView duration:0.6 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ [self.contentView insertSubview:_flipView aboveSubview:_normalView]; } completion:^(BOOL finished) { }]; } //flip the view back to normalView - (IBAction)flipBackButtonAction:(id)sender { [UIView transitionWithView:self.contentView duration:0.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ [self.contentView insertSubview:_normalView aboveSubview:_flipView]; } completion:^(BOOL finished) { }]; } 

и это будет выглядеть как что-то ниже

введите описание изображения здесь

любая проблема просто комментарий … 🙂 надеюсь, что это поможет вам … 🙂

Вероятно, вы не хотите перезагружать данные таблицы, чтобы перевернуть любую данную ячейку. Ваши камеры должны иметь возможность переворачивать «самостоятельно». Таким образом, вам нужно подклассифицировать UITableViewCell и в вашем подклассе у вас будет что-то вроде функции flip , которая выполняет некоторые анимации подкадров соты.

Теперь вот трюк с флип-анимацией. Вы не можете просто изменить иерархию представлений и перевернуть в одно и то же время, или вы увидите «обратную сторону» вашего представления в неподходящее время во время анимации. Используйте две анимации подряд:

 [UIView animateWithDuration:... { // Flip the content "half way" by rotating 90 degrees about the y axis. // At the end of this animation your view will be perpendicular to the // screen and *not visible*. contentView.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 1, 0); } completion: { // Here you can rearrange your views (remember the view isn't visible // right now! // // When the "back side" views are all ready, you can kick off the second // half of the flip animation. [UIView animateWithDuration:... { // Flip *back* to the identity (not all the way around to M_PI) // because if you flip all the way around your views will actually // be flipped. You don't want that. Users will instinctively see // the movement as *continuous* and interpret the flip back and forth // animation as one continuous rotation all the way around. contentView.layer.transform = CATransform3DIdentity; } } 

Я не понимаю, почему вы не могли использовать [UIView animateWithDuration …].

У вас может быть два UIViews в каждой ячейке, которые масштабируются в масштабе. Первый будет виден, а второй будет скрыт

На полуострове анимации просто скройте первый UIView и покажите второй и продолжите анимацию оттуда.

  • Представление UIAlertController из UITableViewCell
  • CAGradientLayer имеет неправильную позицию после прокрутки вверх в UITableView. стриж
  • UITableView прокручивается в UIVIewController
  • получить indexPath из UITableViewCell при нажатии кнопки из ячейки
  • Пользовательский макет UITableViewHeaderFooterView
  • TableView (таблица результатов поиска) неожиданно свидает
  • Как добавить более двух ярлыков в прототип ячейки?
  • Фоновая текстура сгруппированного UITableView не будет прокручиваться вместе с таблицей
  • Полная анимация пользовательского прослушивания UISearchBar с экрана
  • iOS 11 UITableView удаляет строки анимации
  • Постоянный координатор хранилища данных не присутствует
  • Interesting Posts

    Ищите функциональность, не работающую в AVAudioPlayer в приложении iPhone?

    Использование iOS Auto Layout для установления ограничений между контроллером дочернего представления и его родительским представлением

    Circular ImageView iOS 8 / Xcode 6

    Как избежать загрузки данных приложений с помощью xcode

    Как получить событие click с кнопки, добавленной над MKAnnotationView

    Переданы ли данные UIPasteBoard в глубокую копию или мелкую копию?

    Как провести различие между пользовательским разделом UITableView и щелчком первой секции раздела?

    «scrollViewDidScroll» не фиксирует движение непрерывно

    error: Bundle содержит только бит-маркер

    UIScrollView определяет между перетаскиванием и краном

    ACAccountStore accountsWithAccountType, возвращающий пустой список, но запрос на доступ предоставляется

    OpenGL – почему GL_ELEMENT_ARRAY_BUFFER для индексов?

    Как создать эффект CAAnimation, подобно луне, вращается вокруг Земли и одновременно вращается в IOS?

    Слишком много экземпляров этой службы уже запущены

    Программно изменяющиеся контроллеры просмотра без контроллера навигации Swift

    Давайте будем гением компьютера.