我需要一种可以动画改变UILabel字体的方法。我看到很多方法可以动画地改变字体大小,但我需要一种可以改变其类型的方法(例如从粗体到细体)。
我需要一种可以动画改变UILabel字体的方法。我看到很多方法可以动画地改变字体大小,但我需要一种可以改变其类型的方法(例如从粗体到细体)。
两种字体之间没有离散的映射(在数学意义上)。
如果你可以通过逐渐增加大小(10.1、10.2、10.3等)从10号字体过渡到11号字体,那么“介于Helvetica Neue和Helvetica Neue Bold之间的45%的东西”就不存在。
最接近的方法是在个别字母的CG路径之间进行变形,但这需要使用Core Text进行大量工作。
与此同时,我建议您执行简单的淡入淡出效果。
也许在未来(眨眼)会有一些框架帮助您完成这种任务。
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.
}];
愉快编程!
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];
//}
}];
}
这段代码可能会回答你的问题