暗くしたいUIView/CALayerがあります。どうすればできるだけ早く暗くできますか?ブレンドを避ける方法はありますか?
次の選択肢は私に知られています
- 不透明でないCALayerを作成し、背景色と不透明度を設定して、メインレイヤーの上のサブレイヤーとして追加します
- UIViewを使用した上記と同じ(少し遅くなる可能性があります...?)
- ビュー/レイヤーをUIImageにレンダリングし、CoreGraphicsで描画を実行します(速度が遅すぎて、コンテンツが動的/変化します)
暗くしたいUIView/CALayerがあります。どうすればできるだけ早く暗くできますか?ブレンドを避ける方法はありますか?
次の選択肢は私に知られています
スーパービュー/スーパーレイヤーの背景を暗くし、暗くしたいビューのアルファを設定するためのヒントを誰かが教えてくれました。そうすれば、レイヤー/ビューを追加する必要はありません。
これの潜在的な欠点は、グループビューの不透明度がオンの場合 (iOS 7 以降ではデフォルトでオン)、暗くしたいビューがオフスクリーンでレンダリングされることです。
私はこのようなことをしなければなりませんでした。実際のコードに興味がある人のために:
// assuming the view you're trying to darken is called 'mainUIView'
// make the dark layer the same size as the view you're overlaying
UIView *darkBackgroundView = [[UIView alloc] initWithFrame:mainUIView.frame];
CALayer *darkenLayer = darkBackgroundView.layer;
// background color
darkenLayer.backgroundColor = [UIColor blackColor].CGColor;
// transparency (0 is transparent, 1 is solid)
// you can adjust this for the level of darkness you prefer
darkenLayer.opacity = 0.75f;
[mainUIView addSubview:darkBackgroundView];