2012-01-29 20 views
0

我有一個代表遊戲畫面的UIView。我有一個重置按鈕,允許用戶重播該級別。對於重置,雖然我想重置所有的用戶界面控件到他們的默認狀態作爲完成各種動畫發生淡入/出文本和移動圖像等iPhone:用自己替換UIView(重置視圖)

我想要做的是將現有的UIView本身的另一個副本(帶動畫)。我怎樣才能做到這一點,而不打破UINavigation堆棧?當用戶按下新屏幕時,我希望他們轉到原始父級UIView而不是被替換的遊戲屏幕。

+0

http://stackoverflow.com/ q/8247235/684934可能會有所幫助。看起來相關。 – bdares 2012-01-29 12:35:32

回答

0

我使用遮罩視圖進行類似的操作。

  1. 創建一個遮罩視圖,一個UIView集作爲您的起始視圖(或只是一個圖像)。
  2. 動畫從遊戲視圖過渡到您的蒙版視圖。
  3. 重置您的遊戲視圖。
  4. 刪除您的蒙版視圖,顯示您的遊戲視圖。

這樣做,您的UINavigation堆棧不會被破壞,因爲您實際上只使用一個活動視圖(遊戲視圖)和一個靜態掩碼來覆蓋您的視圖以進行過渡。

0

在你的控制器堆棧的頂部,你可能擁有「擁有遊戲視圖」的控制器?

我還假設你在你的控制器中使用自定義視圖來完成大部分的視圖。

如果是這種情況,那麼你應該可以分配,初始化你的遊戲視圖的另一個實例,它將處於默認狀態。將其設置爲0.0f,並將其添加到視圖層次結構中,然後將其alpha設置爲1.0f,然後在動畫完成塊中移除並釋放您不再需要的已售視圖。

或者,您可以定義開始條件,位置,值等,然後在按下按鈕時將它們動畫回來。

希望這有助於:)

+0

嘿,這是最正確的,我目前重置我的自定義視圖,但重置視圖上的所有其他用戶界面元素導致我頭痛:) – Chris 2012-01-29 13:01:45

+0

你想重置什麼其他東西? – 2012-01-29 13:30:33

+0

嗯,我有遊戲板(這只是我改變的位圖),然後是各種UI元素,如標籤和支持圖像。這些都會在完成後感動,因此必須重置 – Chris 2012-01-29 16:26:49

0

我假設你有代碼初始化所有你子視圖和遊戲相關的數據成員的權利嗎?

將該代碼移動到單獨的方法並使重置按鈕調用該方法。

我平時對我創建的每個自定義視圖-setupSubviews方法,我稱之爲每次我需要我的觀點恢復到原來的狀態,例如:

- (void)setupSubviews 
{ 
    _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
    [self addSubview:_titleLabel]; 

    _activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectZero]; 
    _activityIndicator.hidesWhenStopped = YES; 
    [self addSubview:_activityIndicator]; 

    _loading = NO; 
}