iOS 7重新设计导致UITableViewCells
的视图层次结构发生了变化。单元格的内容视图包含在名为UITableViewCellScrollView
的私有类中。
在iOS 7 UITableViewCellScrollView
中,clipsToBounds
设置为YES
,UITableViewCellContentView
设置clipToBounds
设置为NO
。
在iOS 7.1 UITableViewCellScrollView
中,clipsToBounds
设置为NO
,UITableViewCellContentView
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]
有效但是另一个简单的解决方案。
有谁知道为什么会做出这种改变,并且有更强大的解决方案呢?
答案 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];
}