1

我正在嘗試淡入淡出的新圖像。這是一個UIImageView已在一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]; 

回答

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]; 
+0

這是行不通的。 'self.bgImageView.image = toImage;'立即設置新的圖像。然後在2.5秒後變得模糊。 – soleil

+0

@soleil嘗試將visualEffectView添加到您添加bgImageView的同一視圖中,並確保它位於bgImageView的上方,以便模糊它(您還需要爲它提供相同的框架,以便覆蓋它)。我試過了,它爲我工作。 – Artal