我尝试为UILabel设置动画:
let label: UILabel = UILabel()
var transform = CGAffineTransform.identity
UIView.animate(withDuration: 2, animations: {
self.transform = self.transform.translatedBy(x: 0, y: -150)
self.transform = self.transform.scaledBy(x: 2, y: 2)
self.label.transform = self.transform
})
效果很好。我有一个按钮,我添加了一个选择器,以便在按下时,标签再次动画:
func performSearch() {
UIView.animate(withDuration: 2, animations: {
self.transform = self.transform.translatedBy(x: 0, y: -300)
self.label.transform = self.transform
})
}
但它实际上做的是缩小标签的原始状态,将其向下移动到屏幕的底部,然后设置动画,尽管我希望它只是向上移动。为什么呢?
答案 0 :(得分:0)
变换可能有点令人困惑......因为你已经缩放变换,进一步的变换似乎是"自动调整"通过缩放,但不是以一种非常直观或明显的方式。
这可以帮助您进一步:
transient
答案 1 :(得分:0)
如果你想在performSearch()中移动它,你需要使用正y值:
self.transform = self.transform.translatedBy(x: 0, y: 300)
答案 2 :(得分:0)
您可以将坐标系翻转为像iOS这样的行为......
layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);