首页 文章

什么是推荐的核心图形技术,用于绘制非常自定义的UITableViewCells

提问于
浏览
1

enter image description here

大家好 . 关于在核心图形中绘制这样的东西的几个关键点的好奇点 .

When should I use multiple layers? 我知道我可以使用剪切路径在角落上进行舍入,据我所知,听起来这比在CALayer上放置边框半径更有效 .

Is it possible to use the output from UIImageView in drawRect? 我知道你可以在许多地方看到UIImageView对于绘制图像比在drawRect中直接绘制它们更有效 . 是否有可能以某种方式利用它们,或者你只需要吸收它并使用CG?

任何其他提示,技巧和资源,以最佳方式绘制这样的单元格,以获得尽可能高的FPS率是值得欢迎的 .

2 回答

  • 1
    • 现在性能是个问题吗?我会远离“优化”,直到你注意到滞后,而你肯定是因为画“缓慢” .

    • 如果你还没有开始,那么做基本/简单的方法 . 最有可能的是它在新的iOS设备上足够快 .

    • 只需在drawRect中绘制图像,不要做任何花哨的事情 .

    可以PaintCode帮忙吗?它根据您的设计输出Core Graphics代码 .

  • 1

    我应该何时使用多个图层?

    不幸的是,答案是:必要时 . 图层很便宜,而且肯定比UIView / UIImageView更轻,但它们也不是传统iOS响应链的一部分(因为它们不能直接接收/中继触摸),但是单元本身通常会为您处理 . Apple recommends that you avoid -drawRect: 支持清晰度的分割视图层次结构' sake, but that doesn' t表示您必须拥有不同的背景视图 .

    是否可以在drawRect中使用UIImageView的输出?

    如果您遇到FPS问题,那么它会在优化掉可能不是问题点的事情之前发生 . 我会首先调查图像:你是在进行任何类型的缓存,还是每次调用 -drawRect: 时,tableview单元是否必须重绘它? UIImageView是否必须对图像执行任何类型的调整大小/缩放/解压缩?如果是这样,您是否考虑过自己调整图像大小一次,然后将结果保存到位图上下文中,您只需从数组中提取并绘制,而不是让UIImageView浪费时间为您做这些操作?

    只要您的其他问题已经结束,我也会解决动画问题

    在Core Graphics中设置表格单元格's background is trivial, especially if your cell is drawing it'的背景动画,而不是使用CALayer(这意味着您将使用CABasicAnimation在背景颜色上设置动画,如详细here) . 我特别喜欢TwUI's animation mechanism for selected state changes,因为它很简单:

    • 开始动画上下文 .

    • 有一个方法可以调用 -setNeedsDisplay ,或者做一些你想要动画的额外工作 .

    • 提交动画 .

相关问题