相关疑难解决方法(0)

drawRect或不绘制drawRect(何时应该使用drawRect/Core Graphics vs subviews/images以及为什么?)

为了澄清这个问题的目的:我知道如何使用子视图和使用drawRect创建复杂的视图.我试图完全理解何时使用一个而不是另一个.

我也明白,提前优化这一点是没有意义的,并且在进行任何分析之前做一些更难的方法.考虑到我对这两种方法感到满意,现在真的想要更深刻的理解.

我的很多困惑来自学习如何使表格视图滚动性能真正流畅和快速.当然,这种方法的原始来源是来自twitter for iPhone(以前的tweetie)的作者.基本上它说,为了使表格滚动黄油光滑,秘诀是不使用子视图,而是在一个自定义uiview中完成所有绘图.从本质上讲,使用大量子视图似乎会减慢渲染速度,因为它们有很多开销,并且经常在父视图上重新合成.

公平地说,这是在3GS是一个非常新的品牌时写的,iDevices从那以后变得更快.不过这种方法经常 建议interwebs和其他高性能表.事实上,它是Apple的表示例代码中的一种建议方法,已经在几个WWDC视频(iOS开发人员的实用绘图)和许多iOS 编程书籍中提出过.

甚至还有很棒的工具来设计图形并为它们生成Core Graphics代码.

所以起初我会相信"核心图形存在的原因.它很快!"

但是当我认为我得到"尽可能支持核心图形"的想法时,我开始看到drawRect经常导致应用程序响应能力差,内存非常昂贵,并且真正对CPU征税.基本上,我应该" 避免覆盖drawRect "(WWDC 2012 iOS App性能:图形和动画)

所以我想,就像一切一样,它很复杂.也许你可以帮助自己和其他人了解使用drawRect的时间和原因?

我看到一些使用Core Graphics的明显情况:

  1. 你有动态数据(Apple的股票图表示例)
  2. 您有一个灵活的UI元素,无法使用简单的可调整大小的图像执行
  3. 您正在创建动态图形,一旦渲染在多个位置使用

我看到避免Core Graphics的情况:

  1. 视图的属性需要单独设置动画
  2. 你有一个相对较小的视图层次结构,因此任何使用CG的额外努力都不值得获得
  3. 您想要更新视图的各个部分而不重绘整个视图
  4. 父视图大小更改时,子视图的布局需要更新

所以赐予你的知识.您在什么情况下可以使用drawRect/Core Graphics(也可以通过子视图完成)?哪些因素会导致您做出这个决定?如何/为什么在一个自定义视图中绘制建议用于黄油平滑表格单元格滚动,但Apple建议drawRect反对性能原因一般?那么简单的背景图像(你何时使用CG创建它们与使用可调整大小的png图像)?

制作有价值的应用程序可能不需要深入理解这个主题,但我不喜欢在不能解释原因的情况下在技术之间进行选择.我的大脑生我的气.

问题更新

感谢大家的信息.这里有一些澄清问题:

  1. 如果你正在绘制具有核心图形的东西,但是可以用UIImageViews和预渲染的png完成同样的事情,你应该总是走这条路吗?
  2. 一个类似的问题:特别是像这样的badass工具,你何时应该考虑在核心图形中绘制界面元素?(可能是元素的显示是可变的.例如,具有20种不同颜色变化的按钮.还有其他情况吗?)
  3. 根据我在下面的回答中的理解,通过在复杂的UIView渲染自身后有效捕获单元格的快照位图,并在滚动和隐藏复杂视图时显示,可以获得表格单元格相同的性能提升吗?显然有些部分必须要制定出来.我有一个有趣的想法.

iphone core-graphics ios

139
推荐指数
4
解决办法
2万
查看次数

关于quartz2d,核心图形,核心动画,核心图像的混淆

我正在开发一个需要一些图像处理的项目,我也问了一些关于它的问题,我得到了非常好的解决方案,这是通过选择不同的属性在iOS中创建全新图像的链接

但现在我想更详细地了解这一点,我很困惑,我应该从哪里开始学习石英2d或核心动画或核心图形或核心图像

苹果文件说关于石英2d那个

Quartz 2D API是Core Graphics框架的一部分,因此您可能会看到Quartz被称为Core Graphics,或简称为CG.

和苹果文档说关于核心图形

Core Graphics框架是基于C语言的API,它基于Quartz高级绘图引擎.

这令人困惑,他们彼此之间的关系......

现在,核心动画包含绘制图像时也需要的坐标,边界,框架等所有概念

和核心图像在ios 5中引入

我应该从哪里开始学习,或者我从哪个序列开始学习所有这些.

ios

23
推荐指数
2
解决办法
5192
查看次数

CoreGraphics和CoreAnimation之间有什么不同?

我正在使用coregraphics开发iphone游戏.但速度很慢.我无法玩我的游戏..所以,我google了很多..在谷歌搜索期间,我找到了下面的.

CoreGraphics,CoreAnimation,OpenGL ES,CALayer,Quartz 2D

他们之间我很困惑.有人告诉我coregraphics没有使用GPU.有人告诉我它正在使用GPU.coregraphics是最好的,或者openGL最好,calayer更好.^^ ;;;; 它们之间有什么不同,哪一个使用GPU?制作游戏最适合哪一个.我有很多画像.

请让我知道.....提前谢谢.

iphone core-animation opengl-es core-graphics

5
推荐指数
1
解决办法
1940
查看次数

标签 统计

core-graphics ×2

ios ×2

iphone ×2

core-animation ×1

opengl-es ×1