首页 > 解决方案 > Swift 图像从其帧的底部到顶部出现动画(擦除动画)

问题描述

我只是想对如何处理我手头的情况有一些想法。

我已经创建了一些我想要动画的图像,但是我想要的动画不是默认给出的,所以它给了我一些困难。

我想要的动画是这样的:https ://i.stack.imgur.com/byGMC.gif (不是来自屏幕底部,来自图像自己框架的底部)

当按下按钮时,我希望按钮/图像开始从其框架的底部显示到顶部,就像 powerpoint 中的擦除动画一样 :) 所以自然它会默认为隐藏,当按下按钮时它会动画。

我确实尝试了一些方法,但实际上没有一个方法能完成我想要的工作。

像这个:

extension UIView{
    
func animShow(){

        UIView.animate(withDuration: 2, delay: 5, options: [.transitionFlipFromBottom],
                       animations: {
                        
                        self.center.y -= self.bounds.height
                        self.layoutIfNeeded()
        }, completion: nil)
        self.isHidden = false
    }
    func animHide(){
        UIView.animate(withDuration: 1, delay: 0, options: [.curveLinear],
                       animations: {
                        self.center.y += self.bounds.height
                        self.layoutIfNeeded()

        },  completion: {(_ completed: Bool) -> Void in
        self.isHidden = true
            })
    }
}

所以它在图像中滑动,但这不是我想要的,你可以试试代码,只需添加这个并写image.animShow()在 viewDidLoad 中,按钮是我想要动画的按钮。

我感谢每一点帮助,我是快速编程的新手谢谢。

标签: iosswiftanimation

解决方案


首先,您必须从情节提要中给出图像的高度约束,并将高度设置为 0 ,然后将图像高度约束放入您的文件中,如下所示

@IBOutlet weak var imageHeight: NSLayoutConstraint!

这是动画代码。

UIView.animate(withDuration: 2, delay: 2, options: [.transitionFlipFromBottom],
                       animations: {
                        self.image.frame = CGRect(x: self.image.frame.origin.x, y: self.image.frame.origin.y - 100, width: self.image.frame.size.width, height: 100)
                        self.imageHeight.constant = 100
                        self.image.layoutIfNeeded()
        }, completion: nil)

点击这里看动画


推荐阅读