为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡说叔叔 2019-10-24 10:46:17
与其创建两个视图UIImageViews,不如简单地更改image一个视图的视图,这似乎是合乎逻辑的。如果这样做,在两个图像之间是否有淡入淡出/交叉消失而不是即时切换?
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

使用新的基于块的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)


查看完整回答
反对 回复 2019-10-24
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

是的,您说的是绝对正确的,那就是做到这一点的方法。我编写了此方法,并始终使用它来淡化我的图像。我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]。


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 695 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信