猿问
下载APP

更改UIImageView的图像时淡入/溶解

与其创建两个视图UIImageViews,不如简单地更改image一个视图的视图,这似乎是合乎逻辑的。如果这样做,在两个图像之间是否有淡入淡出/交叉消失而不是即时切换?



胡说叔叔
浏览 46回答 3
3回答

明月笑刀无情

另一种方法是使用预定义的CAAnimation过渡:CATransition *transition = [CATransition animation];transition.duration = 0.25;transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];transition.type = kCATransitionFade;transition.delegate = self;[self.view.layer addAnimation:transition forKey:nil];view1.hidden = YES;view2.hidden = NO;请参阅Apple的View Transitions示例项目:https : //developer.apple.com/library/content/samplecode/ViewTransitions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007411

12345678_0001

使用新的基于块的UIKit动画方法可以更加简单。假设以下代码位于视图控制器中,并且您要交叉溶解的UIImageView是可通过属性self.imageView寻址的self.view的子视图。然后,您需要做的就是:UIImage * toImage = [UIImage imageNamed:@"myname.png"];[UIView transitionWithView:self.imageView                  duration:5.0f                   options:UIViewAnimationOptionTransitionCrossDissolve                animations:^{                  self.imageView.image = toImage;                } completion:nil];做完了并在Swift中进行操作,就像这样:let toImage = UIImage(named:"myname.png")UIView.transitionWithView(self.imageView,                          duration:5,                          options: UIViewAnimationOptions.TransitionCrossDissolve,                          animations: { self.imageView.image = toImage },                          completion: nil)斯威夫特3.0 let toImage = UIImage(named:"myname.png") UIView.transition(with: self.imageView,                   duration: 0.3,                   options: .transitionCrossDissolve,                   animations: {                       self.imageView.image = toImage                   },                   completion: nil)

至尊宝的传说

是的,您说的是绝对正确的,那就是做到这一点的方法。我编写了此方法,并始终使用它来淡化我的图像。我CALayer为此处理。您需要为此导入Core Animation。+ (void)fadeInLayer:(CALayer *)l{    CABasicAnimation *fadeInAnimate   = [CABasicAnimation animationWithKeyPath:@"opacity"];    fadeInAnimate.duration            = 0.5;    fadeInAnimate.repeatCount         = 1;    fadeInAnimate.autoreverses        = NO;    fadeInAnimate.fromValue           = [NSNumber numberWithFloat:0.0];    fadeInAnimate.toValue             = [NSNumber numberWithFloat:1.0];    fadeInAnimate.removedOnCompletion = YES;    [l addAnimation:fadeInAnimate forKey:@"animateOpacity"];    return;}您可以执行相反操作以淡出图像。之后淡出。您只需将其从Superview中删除(即UIImageView)。[imageView removeFromSuperview]。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答