在 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's
cornerRadius
属性,它会严重影响滚动性能(与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 的确定方法?的主要内容,如果未能解决你的问题,请参考以下文章