![](/img/trans.png)
[英]UITableViewCell's backgroundView overlapping contentView
[英]Cannot set clipToBounds on UITableViewCell's contentView in iOS 7.1
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]
但这是另一个简单的解决方案。
有谁知道为什么要做出这种改变并采用更强大的解决方案呢?
正如评论中所讨论的,目前iOS7.1中唯一的解决方案是在单元格本身上设置clipsToBounds
。
这很烦人。 我所做的是在contentView中添加一个大小相同的UIView(以及宽度为autoresizingMask),将相关内容添加到该视图,并将clipsToBounds设置为它。
在iOS 8中,在XIB中检查单元格的“剪辑子视图”不起作用。
工作是什么:
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
self.clipsToBounds = YES;
}
我遇到了一些问题,最后我以一种丑陋的方式解决了这个困惑的问题。
// Create a subclass of UITableView
// Then override setClipsToBounds:
- (void)setClipsToBounds:(BOOL)clipsToBounds {
[super setClipsToBounds:YES];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.