2012-06-27 22 views
0

enter image description here我正在開發一個應用程序,我在同一視圖中創建小的子視圖。如何從動畫中排除子視圖?

我想要的是當我更改視圖的alpha值時,子視圖的alpha值也發生了變化,我不想要。

如何實現更改視圖值的代碼,而不是創建的小子視圖。

感謝,

+0

顯示您的代碼.... – Maulik

回答

1

正如已經建議的,你不應該添加YourSubVew作爲YourMainView的子視圖。 使您的兩個視圖成爲一個空白且透明的常見子視圖(ContainerView)的子視圖,它具有與YourMainView當前所具有的大小和位置相同的大小和位置。

ContainerView -> YourMainView 
       -> YourSubView 

請務必先添加YourMainView作爲ContainerView的子視圖添加YourSubView作爲ContainterView的子視圖之前。否則YourMainView可能會重疊/隱藏YourSubView。

這樣做,你可以設置兩個視圖'彼此獨立的獨立。

(奧馬爾的回答是完全正確的,但他的「圖形可視化」是誤導性的,它錯過了子視圖的序列點)

編輯: 你今天有什麼是這樣的:

yourMainView.alpha = 1.0; 
... 
[yourMainView addSubView:yourSubView]; 
yourMainView.alpha = 0.1; //probably with animations etc. 

會發生什麼是yourSubView將「繼承」它的超級視圖的alphaValue。 還有更多。假設你的subView的alpha值爲0.5,那麼當它的超級視圖的alpha值設置爲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。

這基本上都是訣竅。視圖可以很好地重疊在一起,而不是子視圖。只有當他們真的是subveiws,當他們被移動到,出現和消失在一起,使他們subviews。

+0

我同意你的觀點,但我正在做的是,我點擊一個按鈕,它會給我一個小視圖動態地。我想要的是背景視圖應該有更少的阿爾法和創建的小視圖有1作爲阿爾法值。正如你可以看到白色的視圖..它的alpha值也在變化..我不想那 –

+0

是的。只需介紹一下當前觀點背後的新觀點。不要創建子視圖鏈,而要創建一個「叉」,其中您當前的背景視圖和新的子視圖是新引入的公共背景視圖的子視圖。 (ContainerView)然後你可以改變你的YourMainView的alpha值並將其設置爲0或0.1左右,YourSubView的Alpha值可能仍然是1或0.5左右。我會盡量延長我的答案。 –

+0

謝謝..已經嘗試並得到了答案....謝謝 –

2

你不能做到這一點,阿爾法是inheritate,所以你必須做的是將視圖結構從

YourMainView改變 - >您的子視圖

ContainerView - > YourMainView - >您的子視圖

所以現在YourMain查看你想要的一個pply動畫,不是你當前subView的paret視圖,這兩個視圖都是sibilings,ContainerView也會有清晰的背景,所以它不會影響它只會包含視圖

+0

如果他只想改變子視圖的alpha值?那可能嗎? – doge

+0

是的,爲什麼不,他可以改變它,如果他想這樣做,那麼沒有理由改變結構 –