【发布时间】:2014-04-18 16:32:20
【问题描述】:
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],它会坚持下去吗?在单元格 UITableViewCellContentView 上调用 layoutSubviews 时,clipToBounds 再次设置为 NO。
[[self contentView] superview] setClipsToBounds:YES] 在 iOS 7.1 中工作并将 UITableViewCellScrollView 的 clipToBounds 设置为 YES,但这是一个非常脆弱的解决方案。
覆盖单元格上的 layoutSubview 并调用 [[self contentView] setClipsToBounds:YES] 有效,但这是另一种脆弱的解决方案。
有谁知道为什么要进行这种更改以及更强大的解决方案?
【问题讨论】:
-
在单元格本身上将
clipsToBounds设置为YES怎么样?它对我有用。 -
这也可以。理想情况下,我不想告诉表格视图单元格剪裁到边界,以防 Apple 有任何计划因为基本 UITableViewCell 功能而使这些东西呈现在单元格之外。另一方面,内容视图除了总是驻留在单元格内,而且在 7.1 之前,默认情况下总是裁剪到边界。
-
不,在内容滚动视图上将
clipsToBounds设置为YES是一个错误!假设您希望您的内容出现在单元格之外。您将单元格和内容视图设置为不剪辑,但仍有一些内容正在剪辑!这是一个错误,也是 Apple 删除它的原因。如果您不希望内容从单元格中出来,请在单元格本身或其内容视图上设置剪辑。但你应该是设置它的人,而不是系统。 -
是的,我同意滚动视图剪辑是一个错误。我希望能够在内容视图上设置 clipsToBounds 并将其粘贴,但这似乎已被破坏。
标签: ios uitableview uikit ios7.1