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;
        } ];
    });

你可能感兴趣的:(UIView动画失效问题)