变换标签字体大小
Transform label font size
我有两条捷径。
它们每个都有初始属性,例如字体大小和不透明度。
动画前,值为
labelOne.font = labelOne.font.withSize(109)
labelOne.alpha = 1.0
labelTwo.font = labelTwo.font.withSize(40)
labelTwo.alpha = 0.7
动画之后,它们应该具有这些属性:
labelOne.font = labelOne.font.withSize(40)
labelOne.alpha = 0.7
labelTwo.font = labelTwo.font.withSize(109)
labelTwo.alpha = 1.0
对于转换,我使用 CGAffineTransform()
示例:
labelOne.transform = CGAffineTransform(scaleX: //some value? , y: //someValue?)
但我是编程新手,不太了解它是如何工作的。告诉我这个调整字体大小的动画怎么写?
要在两个标签上实现动画,如您所愿,通过控制字体大小和 alpha,您可以这样实现:
// Before animation
labelOne.font = labelOne.font.withSize(109)
labelOne.alpha = 1.0
labelTwo.font = labelTwo.font.withSize(40)
labelTwo.alpha = 0.7
UIView.animate(withDuration: 1, animations: {
// This will be values set during the animation of 1 second
self.labelOne.font = labelOne.font.withSize(40)
self.labelOne.alpha = 0.7
self.labelTwo.font = labelTwo.font.withSize(109)
self.labelTwo.alpha = 1.0
})
同时,CGAffineTransform(scaleX:, y:)
允许您缩放视图的 X、Y 坐标值(例如 labelOne),但要通过动画实现这一点,您必须将其放在动画块中:
// normal state
labelOne.transform = CGAffineTransform(scaleX: 1, y: 1)
labelTwo.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
UIView.animate(withDuration: 1, animations: {
// State reached through the animation
labelOne.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
labelTwo.transform = CGAffineTransform(scaleX: 1, y: 1)
})
为了实现更平滑的过渡播放:
UIView.transition(with: labelOne, duration: 0.25, options: .transitionCrossDissolve, animations: {
self.labelOne.font = UIFont.systemFont(ofSize: 40)
}) { _ in }
我有两条捷径。 它们每个都有初始属性,例如字体大小和不透明度。 动画前,值为
labelOne.font = labelOne.font.withSize(109)
labelOne.alpha = 1.0
labelTwo.font = labelTwo.font.withSize(40)
labelTwo.alpha = 0.7
动画之后,它们应该具有这些属性:
labelOne.font = labelOne.font.withSize(40)
labelOne.alpha = 0.7
labelTwo.font = labelTwo.font.withSize(109)
labelTwo.alpha = 1.0
对于转换,我使用 CGAffineTransform()
示例:
labelOne.transform = CGAffineTransform(scaleX: //some value? , y: //someValue?)
但我是编程新手,不太了解它是如何工作的。告诉我这个调整字体大小的动画怎么写?
要在两个标签上实现动画,如您所愿,通过控制字体大小和 alpha,您可以这样实现:
// Before animation
labelOne.font = labelOne.font.withSize(109)
labelOne.alpha = 1.0
labelTwo.font = labelTwo.font.withSize(40)
labelTwo.alpha = 0.7
UIView.animate(withDuration: 1, animations: {
// This will be values set during the animation of 1 second
self.labelOne.font = labelOne.font.withSize(40)
self.labelOne.alpha = 0.7
self.labelTwo.font = labelTwo.font.withSize(109)
self.labelTwo.alpha = 1.0
})
同时,CGAffineTransform(scaleX:, y:)
允许您缩放视图的 X、Y 坐标值(例如 labelOne),但要通过动画实现这一点,您必须将其放在动画块中:
// normal state
labelOne.transform = CGAffineTransform(scaleX: 1, y: 1)
labelTwo.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
UIView.animate(withDuration: 1, animations: {
// State reached through the animation
labelOne.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
labelTwo.transform = CGAffineTransform(scaleX: 1, y: 1)
})
为了实现更平滑的过渡播放:
UIView.transition(with: labelOne, duration: 0.25, options: .transitionCrossDissolve, animations: {
self.labelOne.font = UIFont.systemFont(ofSize: 40)
}) { _ in }