如何阻止 UITableView 在 iOS 7 中剪辑 UITableViewCell 内容
Posted
技术标签:
【中文标题】如何阻止 UITableView 在 iOS 7 中剪辑 UITableViewCell 内容【英文标题】:How to stop UITableView from clipping UITableViewCell contents in iOS 7 【发布时间】:2013-09-18 16:47:37 【问题描述】:当我将我的应用程序从 ios6 更新到 iOS7 时,我注意到当单元格视图或 contentView 上的 clipsToBounds 属性设置为 NO 时,iOS6 单元格内容被允许跨越单元格外部的位置,iOS7 似乎禁用了这个即使整体视图、tableview、cell 和 cellcontent clipsToBounds 都设置为 NO。您可以在包含的图像中看到此示例。第一个是在iOS6上运行的测试代码,第二个是在iOS7上运行的相同代码:
有谁知道如何解决这个问题?我猜这只是一个单行修复,但我已经花了几个小时没有运气。为了避免重大的重写和头疼的问题,我会尝试使用视图、表格视图、单元格和单元格内容 clipsToBounds 没有结果——在 iOS7 上仍然全部设置为 NO,所以我不确定发生了什么不同。
您可以在https://github.com/Jon-Schneider/ClipsToBoundsTest查看和下载示例项目
谢谢!
【问题讨论】:
不确定这是否可行,但请尝试在单元格和表格视图上将clipsToBounds
设置为 NO。
我试过了,但没用。事实证明,在单元格的主视图和默认将 clipToBounds 设置为 YES 的内容视图之间添加了一个新层。接受的答案有更多细节。
【参考方案1】:
看起来 iOS 7 中表格视图单元格的视图层次结构略有变化。
您可以尝试将剪辑设置为 contentView 的超级视图的边界:
[cell.contentView.superview setClipsToBounds:NO];
如果您将以下代码添加到示例代码并在 ios7 和 ios6 上运行,您会看到在单元格视图和内容视图之间多了一个视图:
[cell.contentView.superview setClipsToBounds:NO];
NSLog(@"%@", cell.contentView.superview);
NSLog(@"%@", cell.contentView.superview.superview);
NSLog(@"%@", cell);
if (self.view.clipsToBounds)
NSLog(@"Master clips");
else
NSLog(@"Master no clip");
【讨论】:
在 iOS 7.1 中,单元格的 UITableViewCellScrollView 的 clipsToBounds 显式设置为 NO。这也发生在 UITableViewCellContentView 上。【参考方案2】:您可以在 Clip Subviews 的 tableview 属性检查器中进行更改。
【讨论】:
现在这是真正的答案!谢谢!以上是关于如何阻止 UITableView 在 iOS 7 中剪辑 UITableViewCell 内容的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 7 中将 UITableView 添加到 UIAlertView
为啥我的 UITableView 在 iOS 7 中被切断了?
我们如何获得类似于 ios 6 的 ios 7 的分组 UITableview 样式