在 UITableView 中有一个带有圆角的 UIImageView 的确定方法?

Posted

技术标签:

【中文标题】在 UITableView 中有一个带有圆角的 UIImageView 的确定方法?【英文标题】:Definitive method to have a UIImageView with rounded corners in a UITableView? 【发布时间】:2012-11-19 20:26:53 【问题描述】:

长期以来,我一直在寻找一种可接受的方法来为UIImageView 添加圆角,该方法作为子视图添加到UITableViewCell 中,而不会影响UITableView 的滚动性能。我指的是调整CALayer'scornerRadius属性,它会严重影响滚动性能(与MasksToBounds结合使用)。

我猜一个可行的方法是深入UIImage 本身并弄乱实际图像 - 但同样,还没有找到可接受的方法。

所以,如果您有一种简洁的方法可以在可滚动的UITableView 中呈现圆角,同时保持完美的滚动性能,我很乐意听取您的意见。感谢你们提供的任何帮助。

【问题讨论】:

不知道设置cornerRadius会导致性能问题。尝试如下 raw3d 的建议。对我来说似乎是个不错的建议。 简单地设置一个角半径不应该让你的应用滞后。 iPhone 的 GPU 最有可能在一秒钟内计算出几个平方根…… 许多用户的大量在线文档表明,在 100 多个单元格的 TableView 中结合使用cornerRadius 和 MasksToBounds 确实会导致性能问题。将cornerRadius设置为UIView(甚至是TableView本身)当然不会引起问题,它是在UITableViewCell中使用的时候;因此,当单元格进入可视区域时,不断地绘制图层就会导致问题。 【参考方案1】:

您可以使用“圆形矩形”类型的 UIButton,并且可以将状态配置设置为“禁用”并向按钮添加图像..

或者导入 QuartzCore.framework 并使用

self.imageView.layer.frame = CGRectInset(self.imageView.layer.frame, 20, 20);

指定你的圆角半径而不是 20,20

【讨论】:

嗯,虽然不是很可定制。假设您使用默认的圆角矩形角半径来处理角?似乎是一种非常严格的方法。【参考方案2】:

ios Stock 应用程序使用圆角。为了达到这个效果,应用程序的每个角落都放置了小圆角图像。这种技术可以快速绘制和实施。查看本书第134页:Pro iOS5

【讨论】:

此方法仅在所讨论的 UIImageView 是静态背景图像时才可行。我将用于功能,例如 Facebook 个人资料图片,其中在图像顶部放置圆角是不可行的。对于它的价值,我发现这种方法非常懒惰,我对 Apple 的开发人员使用这种技术感到有点震惊。我知道这是出于性能原因,但仍然如此。

以上是关于在 UITableView 中有一个带有圆角的 UIImageView 的确定方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何为tableView部分的第一个和最后一个单元格设置圆角

UITableView 上的圆角

如何创建具有边距、圆角和阴影的 UITableView?

设置UITableView的圆角(OC和swift)

UITableView 每个单元格中有多个项目

有没有办法不显示分组 UITableView 中每个部分的顶部和底部单元格的圆角?