ios-使用CAKeyframeAnimation导致导航栏的pop动画卡顿

问题描述

使用CAKeyframeAnimation导致导航栏的pop动画卡顿

我的一个提示框消失的时候,使用自定义的动画,用了CAKeyframeAnimation,此提示框消失的同时,导航栏执行pop viewcontroller操作,这时候,就出现了pop特效有卡顿的现象,如果我用UIView 的animateWithDuration 方法执行那个自定义的动画或者用uialertview代替我自己的提示框,pop特效就很流畅,这是什么原因呢?

代码如下:

 -(void)hideOnPopAnimation{
    dispatch_async(dispatch_get_main_queue(), ^{
        CAKeyframeAnimation *hideAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
        hideAnimation.duration = kDefaultAnimationDuration;
        hideAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1, 1.1, 1.0)],
                                 [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5,0.5 , 1.0)],
                                 [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
                                 ];
        hideAnimation.keyTimes = @[@0.2,@0.5,@1];
        hideAnimation.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                          [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                          [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        hideAnimation.delegate = self;
    hideAnimation.removedOnCompletion = NO;
    hideAnimation.fillMode = kCAFillModeForwards;
        [self.layer addAnimation:hideAnimation forKey:nil];
    });
}
-(void)hideOnPopAnimation{
    [UIView animateWithDuration:kDefaultAnimationDuration animations:^{
        self.transform  = CGAffineTransformMakeScale(0.01, 0.01);
    } completion:^(BOOL finished) {
        [self destroy];
    }];
}
时间: 2024-09-01 09:24:34

ios-使用CAKeyframeAnimation导致导航栏的pop动画卡顿的相关文章

iOS 自定义状态栏和导航栏详细介绍_IOS

iOS 自定义状态栏和导航栏            开发IOS APP 经常会根据需求更改状态栏和导航栏,这里整理了几种方法,大家可以看下. 导航栏透明 -(void)viewWillAppear:(BOOL)animated { //viewWillAppear中设置透明 [super viewWillAppear:animated]; [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetrics

ios开发-IOS开发:push到一个新页面是会卡顿,然后刷出好多个Push到的页面

问题描述 IOS开发:push到一个新页面是会卡顿,然后刷出好多个Push到的页面 解决方案 跳转的时候方法被反复调用了吧 解决方案二: 发代码 出来 不然怎么知道 解决方案三: 你看看你的方法 是不是在其他地方调用了 或者 放到什么循环里去了

ios开发碰到自定义导航栏leftBarButtonItems导致滑动返回失效问题解决方法

通常使用导航控制器 navigationController 跳转到另一页面时,除了可以点击左上角的返回按钮,还可以通过在屏幕左侧向右滑动来返回到上一层.但如果自定义了 self.navigationItem.leftBarButtonItems 后会发现,滑动返回(swipe back)失效了. (如何自定义导航栏左侧按钮可以看这篇文章:Swift - 修改导航栏"返回"按钮文字,图标) 开发碰到自定义导航栏leftBarButtonItems导致滑动返回失效问题解决方法-leftb

iOS应用开发中导航栏按钮UIBarButtonItem的添加教程_IOS

1.UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到. 我们看看它的如何使用: 下面的图显示了导航控制器的流程.最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕:当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕.相应地,在对象管理上,导航控制器使用了导航堆栈.根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock

ios开发Swift修改导航栏“返回”按钮文字,图标

项目中常常会使用 UINavigationController 对各个页面进行导航,导航栏左侧的返回按钮默认标题文字是上级页面的title. 但如果上级页面的标题很长,那么这个返回按钮字很多就会很丑:    开发Swift修改导航栏"返回"按钮文字,图标-swift 导航栏返回按钮">      当文字极其长时返回文字就会变成"back":         一,要修改"返回按钮"的文字,有如下两种方式: 1,在父页面中设置 将na

iOS App开发中导航栏的创建及基本属性设置教程_IOS

文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootview 1.创建navigation 如果是想直接把navigation导航作为项目一开始的跟视图,把RootViewController.h文件里的nav属性放到AppDelegate.h里即可,再把RootViewController.m文件里的action的代码复制到 AppDelegate.m里的di

iOS 在连接无网络的WiFi 会出现卡顿崩溃现象

问题描述 我在连接有网络的WiFi下 IM功能正常, 当我将APP切到后台去连接一个无网路的WiFi后,再次进入APP就会出现百分百卡死,甚至崩溃现象.    (getMyGroupsFromServerWithError   这个方法卡顿了, 开了一个异步并发的线程执行这个方法,还是卡顿 ) 解决方案 这个同步方法,在网络状态不行时是会卡主线程的.

iOS中的导航栏UINavigationBar与工具栏UIToolBar要点解析_IOS

一.导航栏UINavigationBar 1.导航栏的使用 在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar,实际上,我们也可以在不使用导航控制器的前提下,单独使用导航栏,在UINavigationBar中,也有许多我们可以定制的属性,用起来十分方便. 2.UINavigationBar的创建和风格类型 导航栏继承于UIView,所以我们可以像创建普通视图那样创建导航栏,比如我们创建一个高度为80的导航栏,将其放在ViewController的头部,

iOS开发UINavigation系列一——导航栏UINavigtionBar

iOS开发UINavigation系列一--导航栏UINavigtionBar 一.导航栏的使用         在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar,实际上,我们也可以在不使用导航控制器的前提下,单独使用导航栏,在UINavigationBar中,也有许多我们可以定制的属性,用起来十分方便. 二.UINavigationBar的创建和风格类型         导航栏继承于UIView,所以我们可以像创建普通视图那样创建导航栏,比如我们创