【发布时间】:2014-01-28 10:55:40
【问题描述】:
我有一个带有静态单元格的表格视图。单击单元格会切换与该单元格关联的选取器视图单元格的可见性(更改单元格高度)。单击单元格的tag 属性维护选择器单元格的状态。动画由一系列beginUpdates、endUpdates 方法触发。这是一种为选取器单元格的可见性设置动画的简单方法(无需管理单元格插入和删除)。
#pragma mark - Table view data source
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat defaultHeight = [super tableView:tableView heightForRowAtIndexPath:indexPath];
switch (indexPath.row) {
case RowIndexDayTimePicker:
return self.dayTimeCell.tag > 0 ? defaultHeight : 0;
case RowIndexPrivacyPicker:
return self.privacyCell.tag > 0 ? defaultHeight : 0;
default:
return defaultHeight;
}
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case RowIndexDayTime:
self.dayTimeCell.tag *= -1;
self.privacyCell.tag = -1;
break;
case RowIndexPrivacy:
self.dayTimeCell.tag = -1;
self.privacyCell.tag *= -1;
break;
default:
break;
}
[tableView beginUpdates];
[tableView endUpdates];
}
动画按预期工作,直到我将表格视图分隔符属性设置为 None 以使用自定义分隔符。比较两个屏幕截图(动画 gif):
我不知道如何解决它。我使用自动布局,选择器视图与超级视图对齐,每边的边距为零。在 iOS 7 模拟器和 iPos Touch 下测试。故事板截图:
【问题讨论】:
标签: ios uitableview uiviewanimation