0

ここに画像の説明を入力してください同じビューに小さなサブビューを作成するアプリケーションを開発しています。

ビューのアルファの値を変更すると、サブビューのアルファの値も変更されますが、これは不要です。

作成された小さなサブビューではなく、ビューの値を変更するためのコードを実装する方法。

ありがとう、

4

2 に答える 2

2

あなたはそれをすることはできません、アルファは継承されます、それであなたがしなければならないことはからのビュー構造を変えることです

YourMainView-> Your SubView

ContainerView-> YourMainView-> Your SubView

したがって、アニメーションを適用するメインビューは、現在のサブビューのパレットビューではなく、両方のビューがシビリングであり、ContainerViewの背景もクリアであるため、両方のビューが含まれるだけで影響はありません。

于 2012-06-27T09:21:01.907 に答える
1

すでに提案したように、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にのみ影響します。

それが基本的にすべてのトリックです。ビューは、サブビューでなくても完全に重なり合うことができます。それらをサブビューにするのは、それらが実際にサブビューである場合、一緒に移動した場合、一緒に表示および非表示になった場合などです。

于 2012-06-27T09:33:15.330 に答える