2010-03-27 100 views
4

我有以下的代碼做一個UIView動畫:的UIView動畫不能正常工作

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mapView.view cache:NO]; 
[self addSubview:detailView]; 
[mapView removeFromSuperview]; 
[UIView commitAnimations]; 

當我不添加的DetailView它的工作原理。 而實際上,這相當於:

[self addSubview:detailView]; 
[mapView removeFromSuperview]; 
+1

如果您刪除了動畫塊,視圖過渡是否正確發生(顯然沒有動畫)?我想知道如果詳細視圖是有效的? – RedBlueThing 2010-03-27 04:33:53

回答

1

我認爲你有順序不對。您需要先刪除舊的子視圖,然後再添加新的子視圖。

看到setAnimationTransition參考:forView:緩存:

你也可以一個視圖層上使用CATransition。然後使用圖層動畫。

如果您特意要翻轉新視圖,您還可以使用uiviewcontroller的presentalModalViewController方法。

0

我不得不圖形上下文設置爲UIGraphicsGetCurrentContext()

1

我已經看到你的代碼在教程所有的時間,從來沒有爲我工作。我總是用這樣的:

UIViewController *mainViewController = [[YourMainViewController alloc] init]; 
UIViewController *viewControllerToSwitchTo = [[ViewControllerToSwitchTo alloc] init]; 

[mainViewController presentModalViewController:viewControllerToSwitchTo animated: YES]; 

可以設置視圖改變風格:

[setModalTransitionStyle:WhateverModalTransitionStyleYouWant]; 

但要確保過渡方法之前,這正好。

1

該代碼不起作用。從蘋果公司的文檔:

如果你想有一個過渡的 例如在更改視圖的外觀 ,翻轉從一個視圖到 另一個,然後使用一個容器視圖,UIView的的 實例,如如下:

  1. 開始一個動畫塊。
  2. 設置容器視圖上的轉換。
  3. 從容器視圖中刪除子視圖。
  4. 將新的子視圖添加到容器視圖。
  5. 提交動畫塊。

所以過渡應該適用於自己而不是你的mapView,你的添加/刪除是相反的順序。