2015-09-18 34 views
-2

我有一个观点,我想用一个模糊来遮挡它,并让它具有动画效果。我在故事板中添加了名为blurField的UIVisualEffectView。这是我一起入侵的,有没有更干净的方法来做到这一点?谢谢!如何让UIVisualEffectView淡入动画?

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    self.blurField.alpha = 0.0; 
    [self performSelector:@selector(fillInBlur) withObject:nil afterDelay:3.0]; 
} 

-(void)fillInBlur { 
    self.blurField.alpha = 0.1; 
    [self performSelector:@selector(fillInBlur1) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur1 { 
    self.blurField.alpha = 0.2; 
    [self performSelector:@selector(fillInBlur2) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur2 { 
    self.blurField.alpha = 0.3; 
    [self performSelector:@selector(fillInBlur3) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur3 { 
    self.blurField.alpha = 0.4; 
    [self performSelector:@selector(fillInBlur4) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur4 { 
    self.blurField.alpha = 0.5; 
    [self performSelector:@selector(fillInBlur5) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur5 { 
    self.blurField.alpha = 0.6; 
    [self performSelector:@selector(fillInBlur6) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur6 { 
    self.blurField.alpha = 0.7; 
    [self performSelector:@selector(fillInBlur7) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur7 { 
    self.blurField.alpha = 0.8; 
    [self performSelector:@selector(fillInBlur8) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur8 { 
    self.blurField.alpha = 0.9; 
    [self performSelector:@selector(fillInBlur9) withObject:nil afterDelay:0.03]; 
} 

-(void)fillInBlur9 { 
    self.blurField.alpha = 1.0; 
} 

回答

4

在iOS 8中,视觉效果视图不透明度的动画是非法和不可能的。这是因为其实施的特殊方式。

在iOS 9中,您可以直接为模糊本身制作动画。从UIVisualEffectView开始,其effectnil,然后将其effect设置为animations:块内的UIBlurEffect。模糊会将自身变为现实。

仍然有一些限制,但运行时会打电话给你清楚,如果你打他们。有关此主题的WWDC 2015视频很棒。

+0

感谢您的帮助@matt! – tahoecoop