如何在Swift中从屏幕外对UIImage进行动画处理

时间:2018-12-30 20:59:16

标签: animation uiimage xcode10 swift4.2

我已经在网上搜索了,但是没有人可以回答我的问题。

我正在尝试在屏幕外制作UIImageview的动画,将其alpha设置为0,重置其位置,然后再次将alpha重置为1。 我似乎无法在正确的位置对图像进行动画处理。

我已经设置了一个手势识别器来拖动图像,并且当图像的中心在某个点之上时,我想在屏幕外设置动画。

这是Regocnizercode:

@objc func imageDragged(gestureRecognizer: UIPanGestureRecognizer){

    //Current Point where the label is dragged
    let draggedLabelPoint = gestureRecognizer.translation(in: view)
    //Updating the center of the label : viewcenter +/- currentpoint
    matchImageView.center = CGPoint(x: view.bounds.width/2 + draggedLabelPoint.x, y: view.bounds.height/2 + draggedLabelPoint.y)

    let xFromCenter = view.bounds.width/2 - matchImageView.center.x
    var rotation = CGAffineTransform(rotationAngle: xFromCenter / -500)
    let scale = min(100/abs(xFromCenter),1)
    var scaledAndRotated = rotation.scaledBy(x: scale, y: scale)

    //Transforming the Item respective to the distance from center
    matchImageView.transform = scaledAndRotated

    if gestureRecognizer.state == .ended {
        if matchImageView.center.x < (view.bounds.width/2 - 100) {
            animateImageToSide(target: CGPoint(x: view.bounds.width - 200, y: matchImageView.center.y))
            matchImageView.alpha = 0
        }

        if matchImageView.center.x > (view.bounds.width/2 + 100) {
            animateImageToSide(target: CGPoint(x: view.bounds.width + 200, y: matchImageView.center.y))
            matchImageView.alpha = 0
        }

        //Reset the scaling variables and recentering the Item after swipe
        rotation = CGAffineTransform(rotationAngle: 0)
        scaledAndRotated = rotation.scaledBy(x: 1, y: 1)
        matchImageView.transform = scaledAndRotated
        matchImageView.center = CGPoint(x: view.bounds.width/2, y: view.bounds.height/2)

    }
}

很抱歉,重置部分与您无关,但不确定是否会导致此问题。

这是我当前的Animationmethod:

func animateImageToSide(target:CGPoint){
    UIImageView.animate(withDuration: 0.5, delay: 0, options: .curveLinear, animations: {self.matchImageView.center = target}) { (success: Bool) in
        self.updateImage()
        self.fadeInImage()//This is where i set the alpha back to 1
    }
}

我不确定CGPoint是否是我需要使用的东西。

图像的当前行为非常奇怪。在大多数情况下,无论目标位置如何,它都会捕捉到特定位置。也许我的尝试是完全错误的。

感谢您的帮助!

0 个答案:

没有答案