Seb*_*arr 8 animation objective-c uinavigationcontroller uinavigationitem ios
我使用以下代码作为扩展UINavigationController
来推送具有自定义动画的视图控制器:
@implementation UINavigationController (PushAnimation)
- (void)pushViewController:(UIViewController*)controller withTransition:(UIViewAnimationTransition)transition
{
[UIView beginAnimations:nil context:NULL];
[self pushViewController:controller animated:NO];
[UIView setAnimationDuration:1.0];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[UIView commitAnimations];
}
@end
Run Code Online (Sandbox Code Playgroud)
启用缓存后,我在推送时会出现奇怪的动画行为UITableViewController
.自定义动画完成后,将显示推送视图的标题.通过过渡风格UIViewAnimationTransitionNone
,标题本身就变得清晰.它从屏幕的左上角移动到屏幕的中心UINavigationBar
.
禁用缓存后,由于速度不同,此动画不可见,但帧速率显着下降.
如何防止标题动画?
只是快速更新我的修复结果。无法覆盖 的默认行为UINavigationBar
,因为 iOS 使用私有 API 来实现动画。因此,我最终UINavigationBar
使用以下代码删除了 及其各个子视图上的所有动画:
[self.navigationBar.layer removeAllAnimations];
for (UIView *view in self.navigationBar.subviews) {
[view.layer removeAllAnimations];
for (UIView *sub in view.subviews) {
[sub.layer removeAllAnimations];
}
}
Run Code Online (Sandbox Code Playgroud)
重要的是,这是在 之后调用的[self pushViewController:controller animated:NO];
。
归档时间: |
|
查看次数: |
710 次 |
最近记录: |