UITableViewCell在iOS8中不能剪裁到编辑模式的边界(适用于iOS7.1)

我设置的UITableViewCell的高度,以便它将剪辑,而不是行的所有内容是可见的。 这在iOS7中工作正常“不编辑”模式和“编辑”模式。 在iOS8中,它只能在“不编辑”模式下工作。 在单击左侧的红色删除button后,将显示单元格的全部内容, 以便您看到右侧的删除button。

我一直在设置cell.clipsToBounds = YES并认为这是我所需要做的。

编辑 :我也试过cell.contentView.clipsToBounds = YES但是这没有奏效。

iOS7 :(这是我想要的)

在这里输入图像说明

iOS8上:

在这里输入图像说明

看起来像iOS 8中的UITableView在开始编辑时将cell.contentView.clipToBounds设置为NO。 此代码可帮助我解决您的问题:

 - (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.contentView.clipsToBounds = YES; } 

我尝试了VitaliyToddB的解决scheme,不幸的是,尽pipe他们大部分时间都在工作,但并不总是100%一致。

我讨厌必须重写layoutSubviews,但是我发现迄今为止还没有其他解决scheme能够100%的工作:'(

 override func layoutSubviews() { super.layoutSubviews() self.contentView.clipsToBounds = true }