2

暗くしたいUIView/CALayerがあります。どうすればできるだけ早く暗くできますか?ブレンドを避ける方法はありますか?

次の選択肢は私に知られています

  • 不透明でないCALayerを作成し、背景色と不透明度を設定して、メインレイヤーの上のサブレイヤーとして追加します
  • UIViewを使用した上記と同じ(少し遅くなる可能性があります...?)
  • ビュー/レイヤーをUIImageにレンダリングし、CoreGraphicsで描画を実行します(速度が遅すぎて、コンテンツが動的/変化します)
4

3 に答える 3

3

スーパービュー/スーパーレイヤーの背景を暗くし、暗くしたいビューのアルファを設定するためのヒントを誰かが教えてくれました。そうすれば、レイヤー/ビューを追加する必要はありません。

これの潜在的な欠点は、グループビューの不透明度がオンの場合 (iOS 7 以降ではデフォルトでオン)、暗くしたいビューがオフスクリーンでレンダリングされることです。

于 2012-12-21T14:20:58.817 に答える
1

私はこのようなことをしなければなりませんでした。実際のコードに興味がある人のために:

// 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];
于 2014-04-15T05:12:44.530 に答える