【问题标题】:Definitive way to do rounded corners inside UITableViewCells?在 UITableViewCells 内做圆角的确定方法?
【发布时间】:2011-11-21 09:02:22
【问题描述】:

所以我一直在网上,试图找出一个明确的方法来做到这一点,但我似乎无法得到它。我的每个表格视图单元格都有 3 个动态加载的图像,我需要在其中添加圆角。现在我正在使用 Quartz 和 ImageViews 的 layer.cornerRadius 属性来圆角,但它当然会破坏表格视图的滚动性能。

在线浏览,我似乎无法找到性能问题的答案。大多数线程要么最终建议使用预渲染的静态图像(这对我来说不是一个选项,因为图像是从网络动态加载的),要么是 Loren Brichter 为 Tweetie 提出的一些绘图技巧——然而,他的示例项目发布在他的博客上的链接现在是死链接,我在任何地方都找不到。

所以基本上,我的问题是我应该如何在不牺牲性能的情况下完成表格视图单元格内元素的圆角?感谢您的帮助!

【问题讨论】:

  • layer.cornerRadius 不应该扼杀你的表现。什么时候设置?
  • 你的代码有一个自定义的 UITableViewCell 对吗?重复使用你的细胞应该可以让你保持良好的表现。另外,您是否在另一个线程中加载图像?或者你是怎么做到的?祝你好运!
  • Tommy- 在自定义单元格类的 init 方法中设置。 El Developer-是的,自定义单元格。我正在使用正确的重用标识符重用它们。对于图像,我什至还没有尝试使用实际的远程图像,现在我只是在使用本地图像进行测试。
  • 同意@blabus。将cornerRadius 添加到图层只会破坏平滑滚动。在视网膜显示器上更为明显。

标签: iphone performance uitableview rounded-corners


【解决方案1】:

查看其他答案,您似乎正在使用大量 alpha 透明度,这将在性能方面花费您很多。您可以考虑重新访问以获取更多帧。您可以尝试做的一个想法是在图形上下文中渲染圆角图像并将其用作单元图像而不是 QuartzCore 圆角。

  1. 在图像视图中加载图像
  2. 圆角
  3. 将图像渲染到图形上下文中
  4. 使用新图像设置图像视图
  5. 关闭舍入

cellForRowAtIndexPath: 方法中执行所有这些操作。可能会有更高的效率(例如缓存渲染图像),但这是一种至少可以测试预渲染圆形图像性能的方法。

【讨论】:

  • 太棒了,这听起来很有希望。您是否碰巧有与此相关的代码示例的链接? (特别是关于将图像渲染到图形上下文中的部分)谢谢!
【解决方案2】:

如何使用蒙版概念,并在动态图像上覆盖具有透明背景的蒙版 UIImageView。没有试过,我自己,但这是一个选择。

【讨论】:

  • 不幸的是我也不能这样做,因为表格视图本身位于带纹理的背景上,表格视图独立滚动。
猜你喜欢
  • 1970-01-01
  • 2012-08-18
  • 2020-08-25
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 2013-11-18
相关资源
最近更新 更多