2011-09-11 19 views
1

iOSプログラミングを勉強しています。しかし、私は不透明な問題があります。インターフェイスビルダーで不透明な問題

となります。私は2つの画像ビューを持っています。

コードを書くと動作します。コードはここにあります。

UIImageView *imageView1 = [[UIImageView alloc] initWithImage:@"something1"]; 
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:@"something2"]; 
imageView2.opaque = NO; 
[controller addSubView:imageView1]; 
[controller addSubView:imageView2]; 

imageView2はimageView1にあります。 imageView2の不透明なプロパティはNOに設定されています。

私はimageView1のみを見ることができます。 OK。それが私が望むものです。

でも、もっと簡単にやりたいです。だから私はインターフェイスビルダーを使用します。

私は2つの画像ビューを持っています。 1つはワイヤアップIBOutlet ImageView * imageView1

もう1つはIBOutlet ImageView * imageView2です。

私はimageView2のインスペクタを設定しました。不透明のチェックを外します。

と私はそれを構築します。だから私はそれが上記のコードと同じ効果だと思います。

imageView2はimageView1にあります。

それは消えません。

なぜですか?

なぜコードは動作しますが、インタフェースビルダーは動作しませんか?

+0

私は文字列でimageviewsを初期化しているので、実際のコードではないと推測しています。もしあなたがその段階を過ぎていたら、それは2番目に追加されるようにimageview 2を見るでしょう画像の先頭に1. – jrturton

+0

はい。それは私の実際のコードではありません。はい、それは私の間違いです。それは文字列ではありません。それは実際にイメージです。ご意見ありがとうございます。 – MoonSoo

答えて

2

UIViewの不透明なプロパティは、ビューが合成操作を最適化できるかどうかを判断するために使用されます。 alphaプロパティを設定する必要があります。

+0

は任意ですか? imageView2のサイズがimageView1よりも大きいためです。この場合、imageView1をimageView2に設定しても、すべてのことが大丈夫です。私はimageView1とimageView2の両方を見ることができます(もちろん、私はimageView2のいくつかの領域がimageView1に重なっているので見ることができません)が、複数のimageViewsを持っていて、すでに追加した画像よりも大きくなっています。それから、私はこのすべてを並べ替える必要がありますか? – MoonSoo

+0

Interface builderを使用して両方の画像ビューを同時に画面に追加する場合は、画像view2が画像ビュー1の背後になるように並べ替えます。上のコードでは、1、2の順に追加しますインタフェースビルダで、イメージビュー2をドラッグして、イメージビュー1より上になるようにします。2つのイメージを切り替えるだけの場合は、それらのいずれかを非表示に設定するか、Interface BuilderでUIImageViewを追加し、イメージを切り替える必要があるときに保持するUIImageを入れ替えます。下のイメージをマスクする場合は、イメージをマスクする方法を調べる必要があります。あなたの答えに感謝します。 – cdasher

1

コードで追加されたサブビューは、addSubviewという順番で重ねて表示されます。特定のZ位置にサブビューを追加するには、insertSubview: atIndex:を使用します。

インターフェイスビルダーでは、メニューを使用してレイヤリングを手動で制御する必要があります(背面に送るなど)。そうしないと、最後に追加されたビューが一番上に表示されます。

ビューの下のビューを完全に覆い隠すようにするには、opaqueの設定をYESに設定する必要があります。下に表示するビューを表示する場合は、opaqueNOに設定し、アルファ(透明度)を任意に設定します。

+0

しかし、私は不透明に設定しました。アルファを0に設定します。私は1つの画像を全く見ることができません。私はちょうど重複領域を隠したいと思う。画像のすべての領域ではありません。私はこれをすることができますか? – MoonSoo

関連する問題