动画删除UITableViewCellAccessory

时间:2010-12-23 15:58:57

标签: iphone uitableview core-animation

有没有办法动画删除UITableView单元附件?

我目前正在展示UITableViewCellAccessoryDisclosureIndicator,但我想在所有可见的表格单元格上使用UISwitch交换披露指示器。

我尝试过这样的事情:

[UIView animateWithDuration:0.3
                 animations:^{
                   for (SwitchTableViewCell *cell in self.tableView.visibleCells)
                   {
                     cell.accessoryType = UITableViewCellAccessoryNone;
                   }                     
                 }];

......但不幸的是,这没有任何影响。公开指示符突然消失,contentView宽度一步跳跃,而不是平滑过渡。

1 个答案:

答案 0 :(得分:3)

accessoryType不是可动画的属性。根据您的具体情况,有两种方法可以做到这一点。最简单的方法仅适用于因进入编辑状态而将附件更改为UISwitch的情况。在这种情况下,只需在cell.editingAccessoryType = theSwitch;方法中使用tableView:cellForRowAtIndexPath:即可。然后,当进入编辑模式时,表格视图将自动淡入/淡出。

如果您在编辑模式之外执行此操作,则以下代码将执行您想要的操作:

[UIView animateWithDuration:0.3 animations:^{
    for(SwitchTableViewCell *cell in self.tableView.visibleCells) {
        [[cell valueForKey:@"_accessoryView"] setAlpha:0.0];
    }
} completion:^(BOOL done) {
    for(SwitchTableViewCell *cell in self.tableView.visibleCells) {
        cell.accessoryView = theSwitch;
    }
}];

但是,我不知道这段代码是否会进入应用程序商店,因为它使用隐藏属性_accessoryView。