使图像从屏幕左右移动

时间:2018-01-16 17:20:05

标签: ios swift xcode

我想让我的顶部和底部图像移出屏幕,当它们离开屏幕时;我的图像徽标出现了。这是完美的工作,但当我限制我的图像他们做了相反的事情。

所以,不是移出屏幕,而是从屏幕外部进入屏幕。

这是我的代码,提前谢谢。

func dismissImages(){
        imageLogo.isHidden = true

        UIView.animate(withDuration: 17) {
            //self.topImage.frame.origin.x
            self.topImage.center.x -= 400

        }


        UIView.animate(withDuration: 17, animations: {
            self.bottomImage.center.x += 400
        }) { (sucess) in
            if sucess {
                self.imageLogo.isHidden = false
            }
        }

3 个答案:

答案 0 :(得分:0)

我建议动画图层而不是视图本身

.Equals()

答案 1 :(得分:0)

为每个图像设置NSLayoutConstraint,并为该约束设置动画的常量。

// SETUP INITIAL POSITION
let topImageHorizontalConstraint = NSLayoutConstraint(item: topImage, attribute: NSLayoutAttribute.centerX, relatedBy: .equal, toItem: parentView, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0) // Note: Change the constant from 0 to whatever you need it to be initially.

// ACTIVATE CONSTRAINT
topImageHorizontalConstraint.isActive = true

// ANIMATE THE CONSTANT ON THE CONSTRAINT
// Note: This part will be in dismissImages().
UIView.animate(withDuration: 17, animations: {
    topImageHorizontalConstraint.constant -= 400                
},
completion: { (animationFinished: Bool) in
    if animationFinished {
            // Show logo or whatever
    }
})

从iOS 9+开始,你可以使用NSLayoutAnchor来创建约束并简化一些事情。

// SETUP INITIAL POSITION
let topImageHorizontalConstraint = topImage.centerXAnchor.constraint(equalTo: parentView.centerXAnchor, constant: 0)

// ACTIVATE CONSTRAINT
topImageHorizontalConstraint.isActive = true

// ANIMATE THE CONSTANT ON THE CONSTRAINT
// Note: This part will be in dismissImages().
UIView.animate(withDuration: 17, animations: {
    topImageHorizontalConstraint.constant -= 400                
},
completion: { (animationFinished: Bool) in
    if animationFinished {
            // Show logo or whatever
    }
})

我喜欢锚点,因为看起来这种关系似乎更容易,但在这种情况下它非常相似。

注意:您需要在dismissImages()之外设置约束变量。然后在init()或viewDidLoad()或最初的某个地方创建约束,然后调用dismissImages()来为更改设置动画。

答案 2 :(得分:0)

我想出来了。在调用约束函数之前,我调用了动画函数。当我在ViewDidAppear中放入mu动画功能时,我工作得很好。这样,动画将仅在视图出现并设置约束时发生。

感谢。