【问题标题】:Transform label font size变换标签字体大小
【发布时间】:2020-05-17 05:14:03
【问题描述】:

我有两个快捷方式。 它们中的每一个都有初始属性,例如字体大小和不透明度。 动画前,值为

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?)

但我是编程新手,不太了解它是如何工作的。告诉我如何写这个动画并调整字体大小?

【问题讨论】:

标签: ios swift animation label transform


【解决方案1】:

要在两个标签上实现动画,如您所愿,通过控制字体大小和 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 }

【讨论】:

  • 它对我有帮助,但它们急剧下降
  • 你可以通过使用duration值来达到想要的效果,alpha..
  • 也许我需要调整 UILabel 和字体的大小?
  • 取决于您想要实现的视觉输出
  • 嗯,我需要让 UILabel 平滑地缩小到我需要的大小,我想我可以为此更改字体。但它会急剧下降
猜你喜欢
  • 2012-06-04
  • 2016-11-11
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2012-09-12
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多