2012-02-06 77 views
1

我可以使用動畫製作視圖並僅更新其內容嗎? 我有4個視圖是相同的,所以不是創建4個xib,而是想更新視圖,但給用戶一個他已經切換視圖的印象。模擬推動導航控制器的更新視圖

所以我不是真的想要推一下,我只是想給用戶留下這樣的印象。 這可能嗎?

+0

所以你試過。你是否能夠在沒有動畫的情況下切換視圖? – 2012-02-06 15:59:26

+0

仍未嘗試在沒有動畫的情況下切換視圖。這不應該是一個問題。我只需要調用我的控制器.text並給出新的內容。但是,如果沒有動畫,用戶對它不是非常敏銳,他改變了觀點。 – bruno 2012-02-06 16:05:18

回答

1

我設置了一個簡單的項目,其中一個VC和按鈕位於中間以觸發動畫。這裏是綁在按鈕的代碼:

- (IBAction)pushNewView:(id)sender { 
[UIView animateWithDuration:0.5 animations:^{ 
    // this moves the view off screen to the left 
    self.view.frame = CGRectMake(-320, 0, 320, 480); 
} completion:^(BOOL finished) { 
    // this pops the view over to the right side of the screen 
    self.view.frame = CGRectMake(320, 0, 320, 480); 
    [UIView animateWithDuration:0.5 animations:^{ 
     // and this slides it in from the right 
     self.view.frame = CGRectMake(0, 0, 320, 480); 
    }]; 
}]; } 

你可以玩的時間,使它看起來更有點「土」,和前面提到的與阿爾法玩。你可以在兩個動畫塊中的任何一箇中改變它。

+0

就像一點額外的注意事項一樣,確保您更改自身的背景顏色.window與您的動畫製作視圖的背景顏色相同,否則會在屏幕顯示爲黑色(窗口的默認背景色)時顯示第二秒。將alpha設置爲0.3,然後返回1.0也很好。 – jmstone617 2012-02-06 16:24:03

0

能夠繪製一個視圖左側,同時動畫從右側的下一個觀點,這將是同一個推(假設未來和當前的看法已經子視圖)

UIView *nextView.frame = CGRectOffset(self.view.frame, self.view.frame.size.width, 0.0f); 

[UIView animateWithDuration:0.3f animations:^{ 
    currentView.frame = CGRectOffset(currentView.frame, -self.view.frame.size.width, 0.0f); 
    nextView.frame = CGRectOffset(nextView.frame, -self.view.frame.size.width, 0.0f); 
}]; 

如果您嘗試更改視圖的alpha屬性,它可能會更好看

+0

currentView將等於self.view和nextView將是我用UIViewController創建的一個?在那個例子中, – bruno 2012-02-06 16:12:16

+0

它們都是self.view的子視圖。如果您使用視圖控制器創建視圖,然後進行假推,它似乎毫無意義,您應該只推一個視圖控制器的新實例 – wattson12 2012-02-06 16:15:22

4

這個(imho)的最佳方法是在沒有動畫的情況下彈出當前視圖,然後立即再次推送相同的視圖。

myNavigationController = self.navigationController; 
[myNavigationController popViewControllerAnimated:NO]; 
[myNavigationController pushViewController:myViewController animated:YES]; 

這是我用來給無限數量的觀點的影響,而在現實中只能使用/守信在內存中的部分技術。

當想要處理「後退」導航時,您將推送一個沒有動畫的新導航,然後用動畫彈出。

myNavigationController = self.navigationController; 
[myNavigationController pushViewController:myViewController animated:NO]; 
[myNavigationController popViewControllerAnimated:YES]; 
+0

你可以分享你如何訪問myNavigationController和myNavController嗎? – jwhat 2012-03-04 20:55:39

+0

啊,myNavController和myNavigationController將是同一件事(複製和粘貼錯誤,現在我將修復它)。 – ader 2012-03-05 09:15:10

相關問題