我正在尝试为我的应用中的光剑的伸缩设置动画。目前,除了光剑的拉伸/收缩以外,我正在进行所有工作。
理想情况下,我希望能够将实际军刀的底部锚点平放在军刀柄的顶部锚点下方。使用自动版式约束,我已经能够取得一些不错的成绩。但是,我正在努力寻找正确的动画代码。如您从我的代码中看到的那样,我尝试了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)
答案 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)
}