同じビューに小さなサブビューを作成するアプリケーションを開発しています。
ビューのアルファの値を変更すると、サブビューのアルファの値も変更されますが、これは不要です。
作成された小さなサブビューではなく、ビューの値を変更するためのコードを実装する方法。
ありがとう、
あなたはそれをすることはできません、アルファは継承されます、それであなたがしなければならないことはからのビュー構造を変えることです
YourMainView-> Your SubView
に
ContainerView-> YourMainView-> Your SubView
したがって、アニメーションを適用するメインビューは、現在のサブビューのパレットビューではなく、両方のビューがシビリングであり、ContainerViewの背景もクリアであるため、両方のビューが含まれるだけで影響はありません。
すでに提案したように、YourSubVewをYourMainViewのサブビューとして追加しないでください。両方のビューを、YourMainViewと同じサイズと位置を持つ空の透明な共通サブビュー(ContainerView)のサブビューにします。
ContainerView -> YourMainView
-> YourSubView
YourSubViewをContainterViewのサブビューとして追加する前に、必ずYourMainViewをContainerViewのサブビューとして追加してください。そうしないと、YourMainViewがYourSubViewとオーバーラップ/非表示になる可能性があります。
そうすることで、両方のビューのアルファを互いに独立させることができます。
(オマールの答えは非常に正しいですが、彼の「グラフィカルな視覚化」は誤解を招きやすく、サブビューのシーケンスのポイントを見逃していました。)
編集:あなたが今日持っているものはこのようなものです:
yourMainView.alpha = 1.0;
...
[yourMainView addSubView:yourSubView];
yourMainView.alpha = 0.1; //probably with animations etc.
何が起こるかというと、yourSubViewはそのスーパービューのalphaValueを「継承」します。それだけではありません。サブビューのアルファが0.5であるとすると、スーパービューのアルファが0.1に設定されている場合、実質的に0.05になります。
そのコードを次のように変更します。
containerView = [[UIView alloc] init]; //you may choose a different init method
//If you use initWithFrame then use the frame of yourMainView.
//However, make sure that ContainterView is of the same size as yourMainView and has the same position.
[containerView addSubView:yourMainView];
yourMainView.alpha = 1.0;
... [containerView addSubView:yourSubView]; //コンテナにも追加します!yourMainView.alpha = 0.1; //これはMainViewにのみ影響します。
それが基本的にすべてのトリックです。ビューは、サブビューでなくても完全に重なり合うことができます。それらをサブビューにするのは、それらが実際にサブビューである場合、一緒に移動した場合、一緒に表示および非表示になった場合などです。