我有一個代表遊戲畫面的UIView。我有一個重置按鈕,允許用戶重播該級別。對於重置,雖然我想重置所有的用戶界面控件到他們的默認狀態作爲完成各種動畫發生淡入/出文本和移動圖像等iPhone:用自己替換UIView(重置視圖)
我想要做的是將現有的UIView本身的另一個副本(帶動畫)。我怎樣才能做到這一點,而不打破UINavigation
堆棧?當用戶按下新屏幕時,我希望他們轉到原始父級UIView
而不是被替換的遊戲屏幕。
我有一個代表遊戲畫面的UIView。我有一個重置按鈕,允許用戶重播該級別。對於重置,雖然我想重置所有的用戶界面控件到他們的默認狀態作爲完成各種動畫發生淡入/出文本和移動圖像等iPhone:用自己替換UIView(重置視圖)
我想要做的是將現有的UIView本身的另一個副本(帶動畫)。我怎樣才能做到這一點,而不打破UINavigation
堆棧?當用戶按下新屏幕時,我希望他們轉到原始父級UIView
而不是被替換的遊戲屏幕。
我使用遮罩視圖進行類似的操作。
這樣做,您的UINavigation堆棧不會被破壞,因爲您實際上只使用一個活動視圖(遊戲視圖)和一個靜態掩碼來覆蓋您的視圖以進行過渡。
在你的控制器堆棧的頂部,你可能擁有「擁有遊戲視圖」的控制器?
我還假設你在你的控制器中使用自定義視圖來完成大部分的視圖。
如果是這種情況,那麼你應該可以分配,初始化你的遊戲視圖的另一個實例,它將處於默認狀態。將其設置爲0.0f,並將其添加到視圖層次結構中,然後將其alpha設置爲1.0f,然後在動畫完成塊中移除並釋放您不再需要的已售視圖。
或者,您可以定義開始條件,位置,值等,然後在按下按鈕時將它們動畫回來。
希望這有助於:)
我假設你有代碼初始化所有你子視圖和遊戲相關的數據成員的權利嗎?
將該代碼移動到單獨的方法並使重置按鈕調用該方法。
我平時對我創建的每個自定義視圖-setupSubviews
方法,我稱之爲每次我需要我的觀點恢復到原來的狀態,例如:
- (void)setupSubviews
{
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
[self addSubview:_titleLabel];
_activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectZero];
_activityIndicator.hidesWhenStopped = YES;
[self addSubview:_activityIndicator];
_loading = NO;
}
http://stackoverflow.com/ q/8247235/684934可能會有所幫助。看起來相關。 – bdares 2012-01-29 12:35:32