16

iOS 7 的重新设计导致UITableViewCells. 单元格的内容视图被包装在一个名为 的私有类中UITableViewCellScrollView

在 iOS 7UITableViewCellScrollView中已clipsToBounds设置为YESUITableViewCellContentViewclipToBounds设置为NO.

在 iOS 7.1UITableViewCellScrollView中已clipsToBounds设置为NOUITableViewCellContentViewclipToBounds设置为 NO。

如果您[[self contentView] setClipsToBounds:YES]在 iOS 7.1 中调用,它会粘住吗?在单元格 UITableViewCellContentView 上调用 layoutSubviews 时,clipToBounds 再次设置为 NO。

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

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

有谁知道为什么要进行此更改以及更强大的解决方案?

4

4 回答 4

10

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

于 2014-03-14T17:46:14.243 回答
2

It's quite annoying. What I did is add an UIView in the contentView with identical size (and autoresizingMask in width), add the relevant content to this view, and set clipsToBounds to it.

于 2014-08-06T17:32:31.853 回答
2

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

// Create a subclass of UITableView
// Then override setClipsToBounds:
- (void)setClipsToBounds:(BOOL)clipsToBounds {
    [super setClipsToBounds:YES];
}
于 2016-03-11T19:21:19.997 回答
1

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

起作用的是:

- (void)awakeFromNib {
    [super awakeFromNib];

    // Initialization code
    self.clipsToBounds = YES;
}
于 2015-05-12T15:48:17.803 回答