CGRect 放大动画在 Xcode 10 中不起作用?
CGRect scale up animation not working in Xcode 10?
我正在学习教程(即使用 ios 8,但我使用的是 ios 12),该教程教我通过使用 CGRect
放大图像来制作动画。我完全按照使用覆盖功能 viewDidLayoutSubviews
和 viewDidAppear
,但是当我打开应用程序时我的模拟器没有显示图像尺寸增加。
override func viewDidLayoutSubviews() {
pandaImage.frame = CGRect(x: 100, y: 20, width: 0, height: 0)
}
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 1, animations: { () -> Void in
self.pandaImage.frame = CGRect(x: 5, y: 20, width: 400, height: 500)
})
}
我希望图像首先非常小,因此按比例缩小,因此宽度和高度应为 0。然后当我打开应用程序时,图像应自行调整大小,宽度为 400,高度为 500。实际结果是图像本身没有显示,所以我在模拟器上得到一个空白界面。
您可以使用 CGAffineTransform 实现缩放效果:
Grow/decrease动画:
UIView.animate(withDuration: 1, animations: {
self.pandaImage?.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
}) { (_ finished: Bool) in
UIView.animate(withDuration: 1, animations: {
self. pandaImage?.transform = CGAffineTransform(scaleX: 1, y: 1)
})
}
我正在学习教程(即使用 ios 8,但我使用的是 ios 12),该教程教我通过使用 CGRect
放大图像来制作动画。我完全按照使用覆盖功能 viewDidLayoutSubviews
和 viewDidAppear
,但是当我打开应用程序时我的模拟器没有显示图像尺寸增加。
override func viewDidLayoutSubviews() {
pandaImage.frame = CGRect(x: 100, y: 20, width: 0, height: 0)
}
override func viewDidAppear(_ animated: Bool) {
UIView.animate(withDuration: 1, animations: { () -> Void in
self.pandaImage.frame = CGRect(x: 5, y: 20, width: 400, height: 500)
})
}
我希望图像首先非常小,因此按比例缩小,因此宽度和高度应为 0。然后当我打开应用程序时,图像应自行调整大小,宽度为 400,高度为 500。实际结果是图像本身没有显示,所以我在模拟器上得到一个空白界面。
您可以使用 CGAffineTransform 实现缩放效果:
Grow/decrease动画:
UIView.animate(withDuration: 1, animations: {
self.pandaImage?.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
}) { (_ finished: Bool) in
UIView.animate(withDuration: 1, animations: {
self. pandaImage?.transform = CGAffineTransform(scaleX: 1, y: 1)
})
}