在 iPhone 和 iPad 上,我们可以在不使用 drawRect 的情况下绘制任何东西吗?
Posted
技术标签:
【中文标题】在 iPhone 和 iPad 上,我们可以在不使用 drawRect 的情况下绘制任何东西吗?【英文标题】:On iPhone and iPad, can we draw anything without using drawRect? 【发布时间】:2012-04-22 09:04:05 【问题描述】:似乎绘制点、线、圆和贝塞尔路径的标准方法是将它们绘制在drawRect
内部。我们不直接调用drawRect
,而是让ios调用它,我们可以用[self setNeedsDisplay]
告诉iOS在可以调用drawRect
的时候尝试调用...
看来我们也不能依赖
[self setClearsContextBeforeDrawing: NO];
在调用drawRect
之前不清除视图的背景。这个问题中有一些细节:UIView: how to do non-destructive drawing?
直接在屏幕上绘图怎么样——不把这些代码放在drawRect
中。比如ViewController.m
,有一些代码直接在屏幕上画点、线、圆。这可能吗?
【问题讨论】:
当然,完全不使用 UIKit 绘图,而是使用 OpenGL ES 或更高级别的框架(如 Cocos2D)进行绘图时也是可以的。 是吗?只使用 iOS 框架怎么样?它可能像 Win32 一样能够在不在重绘函数中绘制任何东西(当任何矩形区域“无效”时) 而你必须依赖 Cocos2D 或 OpenGL ES 来完成它吗? Apple 的 iOS 框架不能做到这一点? 【参考方案1】:不必进入 OpenGL,绕过擦除的最接近方法是使用 CGBitmapContextCreateImage 之类的东西将上下文转换为图像。从那里,您可以将图像保留在内存中(或在必要时将其写入磁盘),然后在重绘视图时,首先将原始图像绘制到上下文中,然后用新内容覆盖它。
【讨论】:
以上是关于在 iPhone 和 iPad 上,我们可以在不使用 drawRect 的情况下绘制任何东西吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone / iPad 上,如何在不使用图像的情况下制作带有凹槽的 Button?
如何在不为 iphone 和 ipad 创建单独的 xib 的情况下为所有 ipad 和 iphone 创建通用 xib?不是故事板
忘记Apple ID密码,如何从iPhone/iPad上移除 iCloud账号?