实现UIView背景的最快方法是什么?

时间:2009-08-23 12:53:26

标签: iphone uikit core-graphics

我有一个UIView,我想给出一个渐变背景,我想知道如何尽可能高效地实现它。

我正在考虑三种选择:

  1. 创建一个UIImageView作为子视图,并为其显示要显示的渐变图像。

  2. 在原始UIView的drawRect中绘制渐变图像。

  3. 在drawRect:中绘制渐变,但这次使用CoreGraphics“从头开始创建”。

  4. 这三个中哪一个是最快/最少内存密集型的? (跑得最快,不写。)

    谢谢!

2 个答案:

答案 0 :(得分:2)

  • 创建UIImageView作为主视图的子视图将是获得所需内容的最快捷方式。
  • 将图像绘制到视图的上下文中将是内存密集度更高的选项。
  • 使用Core Graphics在代码中绘制渐变将是更有效的方法。

要记住的事情:

您几乎无法控制drawRect执行的频率,因此您不希望在该方法中执行内存分配等操作。

drawRect可以在同一个运行循环中多次调用,因此在该方法中创建自动释放的对象也不是一个好主意,因为它们可能会叠加并消耗更多的内存而不是必需的。

答案 1 :(得分:1)

如果将渐变渲染为UIImage很方便 - 您可能需要考虑类似的内容。

UIImage * gradientImage = GetGradientImage(); //你的代码 self.view.backgroundColor = [UIColor colorWithPatternImage:gradientImage];

您需要平衡大梯度所需的内存与重复计算和绘制它所需的时间。

这适用于很多想要进行小背景自定义的地方,或者你认为需要UIImageView的地方,只是为了在另一个视图上绘制背景。

托德