动画集成中遇到的坑 —— UIView动画在跳转页面中碰到的问题(三)

版本记录

版本号 时间
V1.0 2017.12.03

前言

适当的动画展示可以提高APP的炫酷效果,提高用户忠诚度和粘性,但是在动画集成过程中,不仅可能带来性能问题,还会引起其他交互中的问题,这些都是开发人员在开发过程中比较耗时和需要注意的问题。接下来这几篇我就说一下做各种动画时碰到的各种性能等各种坑和问题。感兴趣的可以看前面几篇。
1. 动画集成中遇到的坑 —— 动画过程中的点击问题(一)
2. 动画集成中遇到的坑 —— UIViewKeyframeAnimationOptionBeginFromCurrentState使用带来的坑(二)

问题描述

UIView动画我们前面讲解了几个坑,这里我要说另外的一个问题,那就是当我们执行UIView动画的时候,这个时候如果我们跳转或者push到别的页面的时候,再pop回来的话,就会发现动画不会继续,而是被完全的取消掉了。


问题展示

为了更好的说明这个问题,下面我们就看一下这个问题的展示。

首先看一下代码。

1. ViewController.m
#import "ViewController.h"
#import "JJJumpVC.h"

@interface ViewController ()

@end

@implementation ViewController

#pragma mark - Override Base Function

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor lightGrayColor];
    
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 100.0)];
    imageView.backgroundColor = [UIColor redColor];
    [self.view addSubview:imageView];
    
    [UIView animateWithDuration:10 animations:^{
        imageView.frame = CGRectMake(350.0, 500.0, 100.0, 100.0);
    }];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    JJJumpVC *jumpVC = [[JJJumpVC alloc] init];
    [self.navigationController pushViewController:jumpVC animated:YES];
}

@end
2. JJJumpVC.m
#import "JJJumpVC.h"

@interface JJJumpVC ()

@end

@implementation JJJumpVC

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor yellowColor];
}

@end

下面我们看一下运行效果:

大家会发现,动画运动到一半的时候,我点击进行跳转,pop回来动画就消失了。

这是什么原因呢?

这里是UIKit框架执行的动画,当我们进行跳转的时候,layer就会removeAllAnimation,取消了所有的动画,这里我直接是动画一直到结束中间没有停顿,假如我动画形式改变了,比如说在中间停顿了一段时间,那么在开始运动到暂停点之间,如果我们进行跳转再回来,就会发现,他会停止在暂停点,然后消失。


问题解决

这种问题的解决方式就是不用UIKit框架,可以使用SpritKit等框架进行动画,系统就不会在跳转的时候取消layer的动画了。感兴趣的可以参考GitHub - 刀客传奇

后记

未完,待续~~~

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 新的一天又开始了,天气越来越好了,也越来越热了,都在家里呆不住了,门口邻居都出来晒太阳了,三五成群扎堆聊天,还是会...
    素锦流年_85be阅读 263评论 0赞 2
  • 不断的燃烧,炸裂。照亮漆黑。似无尽大海的灯塔,迷失人的指引者。终年守着可怖的未知。重复日复一日的光亮。炽热的温度虽...
    页文阅读 348评论 1赞 2
  • 繁华的商业街上,大雪下得很紧,四周笼罩着单调的黑色,就算有路灯偶尔晕出几道光,也尽数被这鹅毛般的大雪吞噬了。 真是...
    虎图2号阅读 620评论 1赞 1
  • 你是角落里的落寞 赠我眼眸温暖笑意 你是初见的泛泛 不露痕迹 你是红尘世俗的你 你是不会拒绝的你 你是固执古板的你...
    e382f8bea485阅读 148评论 0赞 1
  • 事务并发产生的四个问题 更新丢失 当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道...
    妖云小离阅读 827评论 0赞 1

友情链接更多精彩内容