UIView动画失效问题

UIView动画失效

我们一般在做简单动画时,可以用UIView 提供的[UIView animateWithDuration: animations:]等方法,来设置一些简单的动画。但是有时候动画效果会失效。
某个项目中在tableViewCell上使用此方法设置动画时,第一次加载cell时会出现动画失效问题,就会出现所有动画效果duration=0的效果;也就是没有动画效果直接显示设置的值。
WTF ! ! 代码都是常规操作啊,为什么会失效呢?于是各种尝试,把UIView关于动画的属性和方法试了很多。终于发现问题,原来系统不知什么时候把UIView的areAnimationsEnabled值给设置成了NO,这个值在view创建处理默认是YES;

推测原因:多个nsthread同时处理并在thread中改界面是会造成动画丢失的

解决方法:

解决方法一:
调用UIView的 setAnimationsEnabled方法。

   [UIView setAnimationsEnabled:YES];

解决方法二:
将动画代码显式的放在主线程中

    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"线程 %@",[NSThread currentThread]);
        [UIView animateWithDuration:4 animations:^{ 
            NSLog(@"UIView.areAnimationsEnabled==%d",UIView.areAnimationsEnabled); 
            self.blockView.tyu_width = blockW;
        } ];
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容