UITableViewCell在展开动画期间不会剪切到边界

时间:2017-04-25 19:55:19

标签: ios objective-c uitableview

我试图使用包含UIDatePicker的扩展单元格来实现一个相当简单的表格视图,其中包含autolayout / Masonry和自动调整大小的单元格。

我遇到了日期选择器单元以一种很好的方式扩展的问题。当包含日期选择器的单元格开始展开时,其内容显示在单元格之外,即使单元格本身和cell.contentView都有clipsToBounds = YES。我还尝试在clipsToBounds = YES之后重新设置layoutSubviews

对质量感到抱歉,但这里有一个显示慢动作动画问题的GIF。

Animation Glitch

关于如何保持日期选择器夹在其单元格中的任何想法?任何帮助将不胜感激!

可能相关的代码片段:

插入/删除

[self.tableView beginUpdates];

if (showingStartTimePicker) {
    [sections[TableSectionTimes] insertObject:@(TableRowStartTimePicker) atIndex:index];
    [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:TableSectionTimes]] withRowAnimation:UITableViewRowAnimationTop];
} else {
    [sections[TableSectionTimes] removeObject:@(TableRowStartTimePicker)];
    [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:TableSectionTimes]] withRowAnimation:UITableViewRowAnimationTop];
}

[self.tableView endUpdates];

DatePickerCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {

        [self setClipsToBounds:YES];
        [self.contentView setClipsToBounds:YES];

        _picker = [UIDatePicker new];
        [self.contentView addSubview:_picker];
        [_picker makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self.contentView);
        }];
    }
    return self;
}

1 个答案:

答案 0 :(得分:1)

我最终选择的解决方案是将UITableViewRowAnimationTop更改为UITableViewRowAnimationFade,以便在动画显示的部分期间,该行几乎不可见。