无法在iOS 7.1中的UITableViewCell的contentView上设置clipToBounds

时间:2014-03-13 18:01:57

标签: ios uitableview uikit ios7.1

iOS 7重新设计导致UITableViewCells的视图层次结构发生了变化。单元格的内容视图包含在名为UITableViewCellScrollView的私有类中。

在iOS 7 UITableViewCellScrollView中,clipsToBounds设置为YESUITableViewCellContentView设置clipToBounds设置为NO

在iOS 7.1 UITableViewCellScrollView中,clipsToBounds设置为NOUITableViewCellContentView clipToBounds设置为NO。

如果你在iOS 7.1中呼叫[[self contentView] setClipsToBounds:YES],它会坚持下去吗?在单元格上调用layoutSubviews时,UITableViewCellContentView的clipToBounds再次设置为NO。

[[self contentView] superview] setClipsToBounds:YES]适用于iOS 7.1,并将UITableViewCellScrollView的clipToBounds设置为YES,但这是一个非常脆弱的解决方案。

覆盖单元格上的layoutSubview并调用[[self contentView] setClipsToBounds:YES]有效但是另一个简单的解决方案。

有谁知道为什么会做出这种改变,并且有更强大的解决方案呢?

4 个答案:

答案 0 :(得分:10)

正如评论中所讨论的,iOS7.1中唯一的解决方案是在单元格本身上设置clipsToBounds

答案 1 :(得分:2)

这很烦人。我所做的是在contentView中添加一个大小相同的UIView(以及宽度为autoresizingMask),将相关内容添加到该视图,并将clipsToBounds设置为它。

答案 2 :(得分:1)

在iOS 8中,检查XIB中单元格的“剪辑子视图”不起作用。

工作是什么:

- (void)awakeFromNib {
    [super awakeFromNib];

    // Initialization code
    self.clipsToBounds = YES;
}

答案 3 :(得分:1)

我遇到了一些问题,最后我以一种丑陋的方式解决了这个困惑的问题。

// Create a subclass of UITableView
// Then override setClipsToBounds:
- (void)setClipsToBounds:(BOOL)clipsToBounds {
    [super setClipsToBounds:YES];
}