2009-08-23 29 views
0

私はグラデーションの背景を与えたいUIViewを持っており、できるだけ効率的に実装する方法を知りたいと思います。 UIViewの背景を実装する最も速い方法は何ですか?

  1. がサブビューとしてUIImageViewを作成し、それを表示するには、グラデーションのイメージを与える:

    は、私は3つのオプションを検討しています。

  2. 元のUIViewのdrawRect:に勾配画像を描画します。

  3. drawRect:で勾配を描画しますが、今回はCoreGraphicsを使用して 'ゼロから作成する'ことができます。

これら3つのうち、どれが最も高速で、最小のメモリを必要としますか? (実行するのが最も速く、書きません)

ありがとう!

答えて

2
  • メインビューのサブビューとしてUIImageViewを作成することは、あなたが望むものを得るための最も簡単な方法です。
  • イメージをビューのコンテキストに描画する方が、メモリを多く消費するオプションになります。
  • Core Graphicsを使用してコードのグラデーションを描画する方が効率的です。

物事は心に留めておくべき:あなたがそのメソッド内のメモリ割り当てのような物事にしたくないので、

あなたは、少しツーなし頻度のdrawRect実行を制御できます。

drawRectは同じ実行ループで複数回呼び出すことができるため、それらが積み重なり、必要以上に多くのメモリを消費する可能性があるため、自動解放されたオブジェクトを作成することはお勧めしません。

+0

ありがとうございました! –

+0

イメージを作成してdrawRectの内部に描画すると、メモリがより多くなりますが、毎回グラデーションを描画するよりも速くなります。アプリケーションがCPUバインドの場合は、キャッシュされたイメージを使用します。アプリケーションがメモリにバインドされている場合は、グラデーションを直接描画します。 – rpetrich

1

グラデーションをUIImageにレンダリングすると便利な場合 - あなたは何かのように考えることができます。

UIImage * gradientImage = GetGradientImage(); //あなたのコード self.view.backgroundColor = [UIColor colorWithPatternImage:gradientImage];

大きなグラデーションに必要なメモリと、繰り返し計算および描画するのに必要な時間とのバランスを取る必要があります。

これは、背景のマイナーなカスタマイズや、UIImageViewが必要と思われる場所で、別のビューに背景を描画する場合にうまく機能します。

トッド

関連する問題