我有一個UINavigationController有一個可見的導航欄和工具欄。當推動一個控制器(同一個控制器)時,我只想動畫內容部分(例如滑動效果),並保持NavigationBar和Toolbar不動畫/常量。任何人都可以提供任何建議乾淨的方式做到這一點?謝謝。UINavigationController自定義過渡動畫
2
A
回答
1
我手動移動的看法和使用動畫塊它們的動畫:
// Get position of old view controller
CGPoint center = [oldViewController.view center];
// Position new view controller to the right of old one
[newViewController.view setCenter:CGPointMake(center.x + 320, center.y)];
// Animate change
[UIView beginAnimations:@"myAnimation" context:NULL];
// Move old view off screen
[oldViewController.view setCenter:CGPointMake(center.x - 320, center.y)];
// Move new view onto screen
[newViewController.view setCenter:center];
// Set animation delegate to self so that we can detect when animation is complete
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationComplete:finished:target:)];
// Finish animation block
[UIView commitAnimations];
如果您需要使用您需要導航控制器實際推新的ViewController確保您的動畫之後做到這一點已完成,否則舊視圖將不會顯示。爲此,您需要使用setAnimationDelegate方法來獲取動畫完成時間和傳入選擇器方法的通知。在同一類中實現上述代碼和以下方法:
(void)animationComplete:(NSString *)animationId
finished:(BOOL)finished
target:(UIView *)target
{
if([animationId isEqualToString:@"myAnimation"])
{
// Push viewcontroller here
}
}
1
嘗試將工具欄作爲子視圖添加到窗口而不是視圖。並限制導航控制器的視圖高度,以便它可以看到你的工具欄。現在,如果您推動視圖控制器,則導航欄和工具欄將保持無生氣/停滯狀態。
0
將新UIViewController的navigationItem設置爲與當前UIViewController相同。
newViewcontroller.navigationItem = self.navigationItem;
[self.navigationController pushViewController:recallViewController animated:YES];
相關問題
- 1. UINavigationController的自定義過渡動畫視圖控制器alpha值
- 2. 自定義UINavigationController動畫:CATransition
- 3. 自定義的UINavigationController動畫
- 4. 自定義segue過渡動畫
- 5. Android的自定義動畫過渡
- 6. UINavigationController過渡動畫觸發得太快
- 7. iPhone - UINavigationController - 自定義動畫與CATransaction
- 8. UINavigationController中的UITableView自定義動畫
- 9. 自定義UIViewController動畫沒有UINAVIGATIONCONTROLLER
- 10. 兩個活動之間的自定義過渡(動畫)Android
- 11. 自定義活動活動過渡
- 12. UINavigationController隱藏導航欄與自定義過渡代表在iOS7
- 13. 自定義UINavigationController帶性能問題的推/動畫動畫
- 14. 如何創建一個自定義的UIViewController過渡動畫?
- 15. 使用CATransition自定義視圖 - 控制過渡動畫
- 16. 在Android中用於過渡的自定義動畫對象?
- 17. 自定義動畫過渡不工作在iPhone 7模擬器
- 18. 過渡動畫未自動觸發
- 19. UIView過渡動畫
- 20. iOS過渡動畫
- 21. CSS過渡動畫
- 22. 自定義UINavigationController
- 23. 防止UINavigationController的過渡與在IOS 11向上偏移動畫?
- 24. UINavigationController自定義動畫防止從工作中滑動回去
- 25. 翻轉過渡的UINavigationController推動
- 26. 自定義UINavigationController UINavigationBar
- 27. UINavigationController自定義titleView
- 28. UINavigationController上的自定義titleView動畫不正確
- 29. 爲UINavigationController的自定義動畫推不正確
- 30. Android的動畫過渡
Thx。它幾乎可以工作,除了oldViewController視圖在被推入後消失。當動畫發生時,舊視圖只是一種黑色。你知道如何在推送之後保持oldViewController.view可見嗎?這是我添加來設置oldViewController和newViewController的代碼。 \t CGPoint center = [self.view center]; \t UIViewController * oldViewController = [self.navigationController topViewController]; NewController * newViewController = [[[NewController alloc] init] autorelease]; [self.navigationController pushViewController:newViewController animated:NO]; – JStay 2010-02-25 02:11:38
在推入新視圖控制器之前,您需要結束動畫塊。也就是說,在[self.navigationController pushViewController:newViewController animated:NO]之前調用[UIView commitAnimations] – pheelicks 2010-02-25 09:09:53
感謝您的迴應。在提交之後,我將push移動到了,並且它仍然產生與新視圖轉換爲黑/空視圖相同的結果。我在沒有推送的情況下嘗試了代碼,看看舊視圖是否轉換出來,並且它可以工作,但是一旦我介紹推送,它就會消失。 – JStay 2010-02-25 09:54:28