繁体   English   中英

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

[英]Cannot set clipToBounds on UITableViewCell's contentView in iOS 7.1

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

在iOS 7中, UITableViewCellScrollViewclipsToBounds设置为YESUITableViewCellContentViewclipToBounds设置为NO

在iOS 7.1中, UITableViewCellScrollViewclipsToBounds设置为NOUITableViewCellContentViewclipToBounds设置为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM