1. ホーム
  2. ios

[解決済み] UIViewにアルファを設定すると、そのサブビューのアルファが設定される。

2023-03-21 02:22:38

質問

のドキュメントによると UIVIew @property(nonatomic) CGFloat alpha

このプロパティの値は、0.0から1.0までの範囲の浮動小数点数です。 の浮動小数点数で、0.0は完全な透明、1.0は完全な不透明を表します。 は完全に不透明であることを表します。 この値は、現在のビューにのみ影響し、その埋め込まれたサブビューには影響しません。

以下のように設定されたコンテナビューがあります。

self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];

そして、サブビューを 'myView'に追加します。

[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected

しかし、' 別のビュー は画面上にアルファが表示されます(予想通り不透明ではありません)。

これはどうしてでしょうか、また、どうすればよいでしょうか。

どのように解決するのですか?

これはドキュメントのバグだと思います。bugreport.apple.com で報告する必要があります。

ちょっと調べてみたところ、あなたが見ているものは、常にどのように動作しているかということを示唆しており、私自身のテストもそれを示しています。

ビューのアルファは、すべてのサブビューに適用されます。

おそらく、あなたが必要とするのは [[UIColor blackColor] colorWithAlphaComponent:0.5] だけでよいかもしれませんが、そうでない場合は、ビューを子ではなく兄弟にする必要があります。