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
ただし、「anotherView」には画面上にアルファがあります(期待どおりに不透明ではありません)
これはどのようにでき、何ができるのでしょうか?
これはドキュメントのバグだと思います。 bugreport.Apple.comに提出してください。
ちょっとした調査の後に見ることができるすべてのものは、あなたが見ているものがそれが常にどのように振る舞うかを示唆しており、私自身のテストでもそれを示しています。
ビューのアルファはすべてのサブビューに適用されます。
おそらく必要なのは[[UIColor blackColor] colorWithAlphaComponent:0.5]
ただし、そうでない場合は、ビューを子ではなく兄弟にする必要があります。
親ビューにアルファを直接設定しないでください。代わりに、子ビューに影響を与えずに親ビューに透明度を適用する以下のコード行を使用します。
[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];
In Swift
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
PDATED FOR Swift
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
アルファの代わりに背景色の不透明度を設定しても、子ビューには影響しません。
またはプログラムで設定できます
var customView:UIView = UIView()
customView.layer.opacity = 0.3
それでおしまい。ハッピーコーディング!!!
ストーリーボードが好きなら、User Defined Runtime Attribute
Identity Inspector
:
Key Path: backgroundColor
、Type: Color
、Value:
例不透明度50%の白色。
説明した最も簡単な解決策は、次のようにアルファを変更することです。Xcode 8の更新バージョンSwift 3は:
yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
目標C:
yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
Apple Developer Docs here: https://developer.Apple.com/reference/uikit/uiview/1622417-alpha を参照してください。
In Swift 4.2およびXcode 10.1
ストーリーボードを通じて色とアルファ値を追加しないでください。この場合、プログラムによるアプローチのみが機能します。
transparentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
少し複雑なソリューションを次に示します。
UIView *container;
UIView *myView;
UIView *anotherView;
myView.alpha = 0.5;
[container addSubview:myView];
anotherView.alpha = 1;
[container addSubview:anotherView];
container
ビューをスーパービューとして使用します。anotherView
とmyView
は両方ともcontainer
のサブビューであり、anotherView
はmyView
。
今のところParent Viewを透明にし、子ビューをサブビューとして入れない(サブビューとしてビューを入れない)方法は1つしかありません。その子ビューを親の外側に置きます。見る。親ビューを透明にするには、ストーリーボードを使用してこれを実行できます。
//Transparent the parentView
parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
他のビューを親ビューの外側に配置します。それは魅力のように機能します。
Xcodeドキュメントの太字の説明を参照してください。
このプロパティの値は、0.0〜1.0の範囲の浮動小数点数です。0.0は完全に透明で、1.0は完全に不透明です。このプロパティの値を変更すると、現在のビューのアルファ値のみが更新されます。 ただし、そのアルファ値によって与えられる透明度は、そのサブビューを含むビューのすべてのコンテンツに影響します。たとえば、アルファ値が1.0のサブビューは、アルファ値が親ビューに埋め込まれています0.5、アルファ値も0.5のように画面に表示されます。