2016-09-14 8 views
0

一般的な質問です。オブジェクトを.hidden = trueに設定し、αを0に設定することの違いは何ですか?

オブジェクトを.hidden = trueに設定し、αを0に設定することの違いは何ですか?

どちらが効率的ですか?

さらにビューに複数のオブジェクトがある場合は、ビューを非表示にするだけですか?または、ビューと各オブジェクトを個別に非表示にしますか?それはグラフィカル以上であるため、より効率的である.hidden

+2

[ビューのhidden = yesとalpha = 0.0fの違いは何ですか?](http://stackoverflow.com/questions/10911696/whats-the-difference-between-views-hidden-yes-and- alpha-0-0f) –

+0

@ Mr.UBありがとう、しかし私の質問の他の部分については、UIオブジェクトを含むビューに関する。私はビューまたはすべてのオブジェクトを非表示にする必要がありますか?私は効率を最大化しようとしています。 – james

+0

これは言及されています - "実際にはグラフィカルな意味だけでなくUIイベントからビューを隠すためにhiddenを使用すると、たくさんのネストされたビューを持つときにレスポンダチェーンが効率的になります。" –

答えて

1

ビューを「非表示」に設定すると、OSはそのビューまたはサブビューを描画しようとしません。ビューの描画コードは、グラフィックスサブシステムは、= 0その例外値アルファを探しなければならないだろう、おそらくとにかくサブビューを見ていきますので、だからこれは、アルファを設定するよりもはるかに高速であるおよそ

if (! hidden) { 
    for (view* subview in views) 
     if (! subview.hidden) 
      subview.draw; 
    [self drawmyself]; 
} 

です。

レスポンダチェーンについても同じですが、「隠れた」ビューはまったく見られません。また、隠しは扱いがはるかに簡単です:アルファを設定する場合は、以前のアルファ値を覚えておく必要があります。また、ビューを再表示したい場所の新しいアルファ値を計算するために複雑なコードが必要です。

+0

お返事ありがとうございます。 – james

1

1)は、それがUIイベントは、このように容器ビューのみ隠され、より効率的な応答

2)で得られた除去するより効率的な、tahtnはそれをやっているとその要素をループしても同じ動作をします。

0

実際には、「alpha = 0」と「hidden = true」との違いはありません。

(alpha = 0またはhidden = true)のうちのどれかを設定すると、ビューとビューのサブビューが消え、イベントに応答しなくなります。

おそらく効率的なものがいくつかありますが、私はそれを感じることができないと信じています。

+0

だから、あなたは非表示の代わりに表示をしたい=いいえ? – gnasher729

+0

私は彼らのさまざまなことを知っているが、私はそれらのパフォーマンスの問題に出会っていないので、私は彼に "あなたはそれをまったく落とすことはできない"と伝えたい。 –

+0

99.9%の状況で、それらの異なったものが時間を無駄にしているのを見出そうとします。 –

関連する問題