2011-09-11 20 views
1

我正在學習iOS編程。但我有一個問題,這是不透明的。接口生成器上的不透明問題

現在假設。我有兩個圖像視圖。

當我寫代碼,它的工作原理。代碼在這裏。

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。好。這就是我想要的。

但我想做得更輕鬆。所以我使用界面生成器。

我有兩個圖像視圖。一個是連接IBOutlet ImageView * imageView1

另一個是IBOutlet ImageView * imageView2。

我設置了imageView2的檢查器。並取消選中不透明。

我建立它。所以我認爲它與上面的代碼具有相同的效果。

但imageView2位於imageView1上。

它不會消失。

這是爲什麼?

爲什麼代碼可以工作,但界面生成器不是?

+0

我猜測上面的代碼並不是你真正的代碼,因爲你正在用一個字符串初始化圖像視圖,如果你已經過了那個階段,那麼你會看到imageview 2只是因爲它被添加了第二個,所以會imageview頂部1. – jrturton

+0

是的。這不是我真正的代碼。是的,這是我的錯誤。它不是一個字符串。它實際上是圖像。謝謝你的評論。 – MoonSoo

回答

2

UIView的不透明屬性用於確定視圖是否可以優化合成操作。你應該設置alpha屬性。

+0

有什麼選擇?因爲imageView2的大小比imageView1大。在這種情況下,如果我在imageView2上設置imageView1,一切都很好。我可以看到imageView1和imageView2兩者(當然,我無法看到imageView2的某個區域,因爲該區域與imageView1重疊),但是當我有多個imageViews,並且我想添加一個imageView。它比我已經添加的一些圖像更大。那麼我必須重新排列所有這些? – MoonSoo

+0

如果您正在使用界面構建器在屏幕上同時添加兩個圖像視圖,只需重新排列它們以使圖像view2位於圖像視圖1的後面,在我們上面的代碼中,按照1,然後2在界面構建器中,拖動圖像視圖2以使其位於圖像視圖1上方。如果您試圖在兩個圖像之間切換,您可以將其中一個設置爲隱藏,或者只需將UIImageView添加到「界面」構建器中,然後在需要切換圖像時交換其保存的UIImage。如果您試圖遮蓋底部圖像,則需要調查如何遮蓋圖像。 – cdasher

1

在代碼中添加的子視圖將按照您調用addSubview的順序放置在彼此的頂部。要在特定的Z位置添加子視圖,請使用insertSubview: atIndex:

在界面構建器中,您必須使用菜單(發送回等)手動控制分層,否則最後添加的視圖將處於頂層。

如果您希望視圖完全遮蔽下方的視圖,則應將opaque設置設置爲YES。如果您希望下方的視圖顯示,請將opaque設置爲NO,並根據需要設置alpha(透明度)。

+0

感謝您的回答。但我把不透明設置爲NO。並將alpha設置爲0.我根本看不到一個圖像。我只想隱藏重疊區域。不是所有的圖像區域。我可以這樣做嗎? – MoonSoo