微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上下图像视图,反之亦然Swift / iOS

如何解决上下图像视图,反之亦然Swift / iOS

对于我的个人项目,我尝试使叶子的图像上升5秒钟,然后降低5秒钟。 仅在升高和降低纸张后,它才能很好地工作,它可以改变位置并将其很好地传送到屏幕的底部。 我希望它从下降结束的地方上升。我已经尝试了几件事,但是没有任何效果。我希望可以在下降后恢复原始位置,但我认为这样会使图像在屏幕上闪烁。 有什么想法吗?

func upLeaf(){
        let xPosition = imageLeaf.frame.origin.x
        let yPosition = imageLeaf.frame.origin.y - 100 // Slide Up - 20px
        let width = imageLeaf.frame.size.width
        let height = imageLeaf.frame.size.height
      
        UIView.animate(withDuration: 5.0,animations: {
            self.imageLeaf.frame = CGRect(x: xPosition,y: yPosition,width: width,height: height)
        })
    }
    
    func downLeaf(){
        let xPosition = imageLeaf.frame.origin.x
        let yPosition = imageLeaf.frame.origin.y + 100 // Slide Up - 20px
        
        let width = imageLeaf.frame.size.width
        let height = imageLeaf.frame.size.height
        
        UIView.animate(withDuration: 5.0,height: height)
        })
        secondUp = true
    }

解决方法

可以使用CGAffineTransform而不是使用帧来执行动画。它更强大且同样容易:

UIView.animate(withDuration: 5.0,animations: {
   line3.transform = CGAffineTransform(translationX: 0,y: 100)
})    

要返回初始状态时,请输入:

UIView.animate(withDuration: 5.0,animations: {
    line3.transform = CGAffineTransform.identity
})

CGAffineTransform会记住您的视图的初始参数,因此您不必自己进行任何计算。

,

如果您只想让叶子上下运动,则可以为imageLeaf的{​​{1}}设置动画(无需跟踪frame.origin.yorigin.x,或width)。

height

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。