2017-12-18 9 views
0

ビューの右上にはメニューボタン(+)があり、ボタンを押すと他のいくつかのボタンがドロップダウンして選択できます。ボタンの背景にあるすべてのビューの淡色化

これらすべてのボタンの下のすべてのビューを効率的に暗くしたいと思います。

私が現在やっていることは、ボタンをクリックした後、すべての上に透明なビューを表示し、背景色と透明度を変更することです。

if button.isHidden { 
    self.dimView!.backgroundColor = UIColor.black 
    self.dimView!.alpha = 0.7 
} else { 
    self.dimView!.alpha = 0 
} 

これを効率的に達成する方法はありますか?それは接触を妨げることはありませんし、携帯電話の速度を落とさないという意味で効率的ですか?

+0

ビューがバックグラウンドにある場合、ドロップダウンボタンの接触を妨げません。 –

+0

@ShamasSビューはテーブルビューやその他のラベルの上にバックグラウンドで表示されていますが、ビューの上にあってもタッチを妨げるようには見えませんが、テーブルビューが遅れるかどうかはわかりません。 – gencode

答えて

1

あなたの調光ビューべきそれがカバービュー上無効タップそれはアルファが0.5を超えているのです。

アルファを0に設定すると、おそらくview.hidden=trueに設定する必要があります。こうすることで、レンダリングシステムは画面上の他のビューと合成しようとしません。 alphaを0.7に設定する前にhidden=falseに設定し、アルファを0に設定するのではなく、hidden=trueに設定してください。アルファ値をアニメーション化する場合は、hidden = trueを指定してください。

+0

これは私が探していたものですが、明確にするために、これを行うにはこれが最善の方法ですか? – gencode

+1

私は最高の方法についてはわかりませんが、これは私がやったことです。うまくいきます。 –

0

目的の結果を得るには、透過ビューはViewControllerのすべてのサブビューのバックグラウンドにする必要があります。効率的かつ最適化された方法について

、ビューの不透明なプロパティを設定した方が良いでしょう、ここでの説明は次のとおりです。 -

「不透明」プロパティがどのようにとして描画システムにヒントを提供しますそれは ビューを処理する必要があります。 trueに設定すると、描画システムは ビューを完全に不透明なものとして扱います。これにより、描画システムは幾分 描画操作を最適化し、パフォーマンスを向上させることができます。 falseに設定すると、 描画システムは通常他のコンテンツとビューを合成します。 このプロパティの既定値はtrueです。

不透明なビューは、その境界を完全に不透明な のコンテンツで満たすと予想されます。つまり、コンテンツのアルファ値は1.0にする必要があります。 ビューが不透明で、境界が満たされないか、または完全に または部分的に透過的なコンテンツが含まれている場合、結果は予測できません。ビュー が完全または部分的に透明である場合、 は、このプロパティの値を常にfalseに設定する必要があります。

コードは次のようにする必要があります: -

view.backgroundColor = UIColor.black.withAlphaComponent(0.75) 
view.isOpaque = false 
+0

申し訳ありませんが、私の質問はあまり明確ではないと思います。私のラベルとボタンの上に標準ビューを追加しましたが、自分の(+)ボタンの下に追加しました。このボタンをクリックすると、他のビューの上に置かれたビューを黒にして透明にします。 – gencode

関連する問題