Ios 如何设置UILabel或UIExtField文本大小的动画?

Ios 如何设置UILabel或UIExtField文本大小的动画?,ios,objective-c,uilabel,core-animation,Ios,Objective C,Uilabel,Core Animation,我在UIView中有一个UITextfield,其中包含一些默认文本。我想设置此文本字段(以及父UIView)%300的缩放动画,然后再返回到100% 我该怎么做?似乎我所发现的一切都涉及到一个黑客图像捕获和CGAffineTransformMakeScale 我花了很多时间来搜索,所以要实现它,要么很困难,要么很昂贵,要么非常繁琐。如果是后者,我也不会感到惊讶 您不必从视图中捕获图像,只需使用以下代码在标签上使用缩放变换即可 [UIView beginAnimations:nil contex

我在UIView中有一个UITextfield,其中包含一些默认文本。我想设置此文本字段(以及父UIView)%300的缩放动画,然后再返回到100%

我该怎么做?似乎我所发现的一切都涉及到一个黑客图像捕获和CGAffineTransformMakeScale


我花了很多时间来搜索,所以要实现它,要么很困难,要么很昂贵,要么非常繁琐。如果是后者,我也不会感到惊讶

您不必从视图中捕获图像,只需使用以下代码在标签上使用缩放变换即可

[UIView beginAnimations:nil context:nil];
label.transform = CGAffineTransformMakeScale(3.0, 3.0);
[UIView commitAnimations];
但这种方法的唯一问题是文本可能看起来不清晰

如果您希望
UILabel
的缩放比我建议您尝试核心文本框架。这肯定会帮助你实现你的目标

您可以找到相关的教程。

参考:

这可能会帮助您:)

在Swift 4.1中

使用
UIView.animate(持续时间:)
对FontSize不起作用。而且使用
cGraffinetTransform
很难管理,并且必须应用于
UILabel
UITextField
,但正如公认的响应中所说,结果并不清晰

这就是我正在使用的解决方案

var fontSize: CGFloat = 12.0
Timer.scheduledTimer(withTimeInterval: 0.02, repeats: true) { (timer) in
    self.font = UIFont(name: "Roboto-Regular", size: fontSize)
    fontSize += 0.5 // Or 0.333 to allow for 3X resolution screens.
    if fontSize > 17.0 {
        timer.invalidate()
    }
}

是否要更改帧的大小?现在可以对UIView动画使用块:[UIView animateWithDuration:0.5f动画:^{label.transform=CGAffineTransformMakeScale(3.0,3.0);}]
var fontSize: CGFloat = 12.0
Timer.scheduledTimer(withTimeInterval: 0.02, repeats: true) { (timer) in
    self.font = UIFont(name: "Roboto-Regular", size: fontSize)
    fontSize += 0.5 // Or 0.333 to allow for 3X resolution screens.
    if fontSize > 17.0 {
        timer.invalidate()
    }
}