1

我正在尝试交叉淡入淡出到新图像。这是一个添加了 UIVisualEffectView 的 UIImageView:

self.bgBlurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
self.visualEffectView = [[UIVisualEffectView alloc] initWithEffect:self.bgBlurEffect];

self.visualEffectView.frame = self.bgImageView.bounds;
[self.bgImageView addSubview:self.visualEffectView];

这是我尝试淡入新图像的方式:

UIImage *toImage = [UIImage imageNamed:imgName];

CABasicAnimation *crossFade = [CABasicAnimation animationWithKeyPath:@"contents"];
crossFade.duration = 2.5;
crossFade.delegate = self;
crossFade.fromValue = (id)self.bgImageView.image.CGImage;
crossFade.toValue = (id)toImage.CGImage;
[self.bgImageView.layer addAnimation:crossFade forKey:@"animateContents"];
self.bgImageView.image = toImage;

这实际上在模拟器中有效,但在设备(iPhone 6)上,图像完全变灰 2.5 秒,然后新图像立即出现。有想法该怎么解决这个吗?

编辑:这也不起作用:

[UIView transitionWithView:self.bgImageView
                  duration:2.5
                   options:UIViewAnimationOptionTransitionCrossDissolve
                animations:^{
                    self.bgImageView.image = toImage;
                } completion:nil];
4

1 回答 1

0

也许这种方法适用于淡入淡出动画:

self.bgImageView.image = toImage;

CATransition *fadeTransition = [CATransition animation];
fadeTransition.duration = 2.5;
fadeTransition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
fadeTransition.type = kCATransitionFade;

[self.bgImageView.layer addAnimation:fadeTransition forKey:nil];
于 2015-04-23T22:24:57.570 回答