【发布时间】:2013-06-24 21:12:18
【问题描述】:
我需要一种用动画来改变 UILabel 字体的方法。我看到了很多方法来动画字体大小的变化,但我需要一种方法来改变它的类型(例如粗体字)。
【问题讨论】:
标签: ios objective-c uilabel uifont
我需要一种用动画来改变 UILabel 字体的方法。我看到了很多方法来动画字体大小的变化,但我需要一种方法来改变它的类型(例如粗体字)。
【问题讨论】:
标签: ios objective-c uilabel uifont
两个字体之间没有离散映射(在数学意义上)。
如果您可以通过渐变 (10.1, 10.2, 10.3, ...) 从 10 号到 11 号,则不存在“helvetica neue 和 helvetica neue bold 之间的 45%”之类的东西。
您可以做的最接近的方法是在单个字母的 CGPath 之间进行变形,但这需要使用 CoreText 进行大量工作。
同时,我只是建议您执行一个简单的淡入淡出。
也许在未来(眨眼,眨眼)会有一些框架来帮助你完成这类任务。
【讨论】:
这可能对搜索此答案的人有所帮助:
要从一种字体淡化到另一种字体,请执行以下操作:
UIView.transition(with: label, duration: 0.25, options: .transitionCrossDissolve, animations: {
self.label.font = UIFont.systemFont(ofSize: 15)
}) { isFinished in }
有文字时转到:
UIView.transition(with: label, duration: 0.25, options: .transitionCrossDissolve, animations: {
self.label.font = UIFont.boldSystemFont(ofSize: 15)
}) { isFinished in }
(Gif 显示不同的字体)
【讨论】:
您可以像这样设置新的大小并在动画后更改标签。
[UIView animateWithDuration:0.9 animations:^{
label.frame = (CGRect){ CGPointMake(51, 150), label.bounds.size };
} completion:^(BOOL finished) {
label.font=[UIFont boldSystemFontOfSize:15];
// etc.
}];
享受!!
【讨论】:
使用 uiview animateWithDuration。在块内更改字体类型(粗体)
【讨论】:
if(font_index == 8)
font_index = 0;
[UIView animateWithDuration:2
delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
UIFont* newfont = Nil;
if(font_index % 2 != 0)
{
newfont = [UIFont fontWithName:self.fontNames[font_index] size:8];
}
else
{
newfont = [UIFont fontWithName:self.fontNames[font_index] size:20];
}
self.keyButton.titleLabel.font = newfont;
}
completion:^(BOOL finished){
// if(finished)
// {
font_index++;
[self fontIt];
//}
}];
}
此代码可能会回答您的问题
【讨论】: