ios - 如何翻转 iOS UITableViewCell?

标签 ios uitableview animation

我有一个包含多个单元格的表格 View 。每个单元格都有一个小信息“i”按钮,我希望用户能够通过从右侧“翻转”单元格来单击以编辑该单元格中的信息。

对于两种可能的单元格状态,我都有一个单独的表格单元格 XIB,并且 cellForRowAtIndexPath 提供了正确的 XIB(具有不同的单元格标识符),具体取决于该单元格是应该在常规 View 中还是在详细信息/编辑中看法。这可以很好地使用 reloadRowsAtIndexPaths 来反射(reflect)按下“i”按钮时更改的状态。

但我就是不知道如何在按下单元格的“i”按钮时为翻转设置动画。翻转不是 reloadRowsAtIndexPaths 中“withRowAnimation”的选项之一。使用像 UIView animateWithDuration 这样的标准动画方法是行不通的:reloadRowsAtIndexPaths 只会导致相关单元立即重新加载,而忽略动画指令。我什至尝试使用 drawViewHierarchyInRect 将单元格的 future 状态作为图像获取,但我无法让单元格足够快地重新绘制自身以被 drawViewHierarchyInRect 拾取(并且我不希望用户实际看到结果动画之前的动画)。

有没有人知道如何处理这个问题?

编辑

总而言之,我面临的挑战是:除了 reloadRowsAtIndexPaths(会破坏动画)之外,是否还有另一种方法可以将 UITableView 单元格内容与不同的 UITableViewCell Xib 交换,而不会导致新 Xib 的 IBOutlets 出现问题? (将它作为 Nib 加载到 subview 中似乎会破坏 IBOutlets。)到目前为止,答案还没有解决这个问题。

最佳答案

如果你使用两个子类UITableViewCell,而不是使用一个子类UITableViewCell,并执行例如翻转动画,这会很复杂,

让xib包含子类UITableViewCell在其contentView中添加两个 View

  1. 普通 View
  2. 翻转 View

在此 View 中添加您要显示的内容,并确保两者在单元格中都有 socket 例如,我采取了

enter image description here

在上面的两个 View 中,第一个View-FlipView及其内容标签和按钮,第二个也与第一个 View 相同,顶 View 应该是normalView
将按钮操作连接到单元格,您只需在自定义单元格中执行如下操作

  //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) {

   }];
  }  

它看起来像下面的东西

enter image description here

任何问题只要评论... :) 希望这可以帮助你 .. :)

关于ios - 如何翻转 iOS UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688083/

相关文章:

ios - 在应用程序处于终止状态时增加或减少应用程序角标(Badge)

ios - UITableViewCell 中的 UITextView 防止 segue

swift - Swift 中的事件指示器表格 View

javascript - HTML Canvas : Animation Delay

ios - 如何获取在闭包中分配的变量的值(Swift)

ios - 为什么dyld_decache segfault的解决方案有效?

ios - 对于使用 HTTPS 的 iOS 应用程序,我应该使用哪个 ECCN?

swift - 修复 UITableViewController 的 UINavigationBar 下面的 UILabel 位置

ios - UITableViewController 不传递数据

AngularJS:动画对象从 DIV A 到 DIV B 直线