Swift:动画拉伸和缩小图像

时间:2019-05-09 05:46:20

标签: ios swift xcode animation

我正在尝试为我的应用中的光剑的伸缩设置动画。目前,除了光剑的拉伸/收缩以外,我正在进行所有工作。

理想情况下,我希望能够将实际军刀的底部锚点平放在军刀柄的顶部锚点下方。使用自动版式约束,我已经能够取得一些不错的成绩。但是,我正在努力寻找正确的动画代码。如您从我的代码中看到的那样,我尝试了frame.size.height / width,但是这只会移动军刀的框架(而不是手柄)。关于frame.size.height的行实现了我想要的使其伸展/增长的功能,但这是一种非常简单的方法。

当前frame.size.height / width方法仅移动图像,我如何实现拉伸/收缩功能?是否可以通过自动布局约束中的乘法器功能来实现?

y = np.array(12)
y = y.reshape(-1,1)
print(y.shape)

O/P:- (1, 1)

2 个答案:

答案 0 :(得分:0)

您的主要问题是有约束时的帧动画,您需要2个中的1个或为动画设置约束或将其移除并使用frame属性设置动画,在这种情况下,您需要确保添加了UIImageView translatesAutoresizingMaskIntoConstraints = false

要在Autolayout系统中设置宽度和高度的动画,您需要将约束引用获取为IBOutlet并在动画块中设置常量属性的动画,

这是一个非常小的例子

class ViewController: UIViewController {
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var imageHeightConstraint: NSLayoutConstraint!
    @IBOutlet weak var imageWidthConstraint: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

    }
    @IBAction func action(_ sender: Any) {
        UIView.animate(withDuration: 0.5, animations: {
            self.imageHeightConstraint.constant = self.imageHeightConstraint.constant - 10
            self.imageWidthConstraint.constant = self.imageWidthConstraint.constant - 10
            self.view.layoutIfNeeded()
        })
    }

}

答案 1 :(得分:0)

首先添加宽度和高度的约束

 @IBOutlet weak var saberImageHeightConstraint: NSLayoutConstraint!
 @IBOutlet weak var saberImageWidthConstraint: NSLayoutConstraint!

尝试此操作以在调整框架大小时获得动画。

if mainView.saberImage.isHidden == true 
{
    mainView.saberImage.isHidden = false
    self.saberImageHeightConstraint.constant -= 500
    UIView.animate(withDuration: 0.5, animations: {
        self.view.layoutIfNeeded()    
        self.viewDidLayoutSubviews()    
    }, completion: nil)

    lightsaberModel.turnSaberOnAudio.play()
} 
else 
{
    mainView.saberImage.isHidden = true
    self.saberImageHeightConstraint.constant += 500
    UIView.animate(withDuration: 0.5, animations: {
        self.view.layoutIfNeeded()
        self.viewDidLayoutSubviews()
    }, completion: nil)
}
相关问题