gpt4 book ai didi

ios - 动画转换 UILabel 的一部分

转载 作者:行者123 更新时间:2023-11-29 12:31:32 25 4
gpt4 key购买 nike

假设我有这样的文本:“今天下午 3 点见”,我想将“今天”部分从原始大小动画缩放到 x1.2,然后再返回(只是一种吸引用户注意力的视觉效果到文本的那部分)。

我如何实现这一点?简单的解决方案是使用 3 个单独的标签并为中间标签设置动画 CGAffineTransformMakeScale,但这是一个糟糕的解决方案,因为当文本更改时(例如,当我们将其本地化为其他语言时)很难做到这一点。

最佳答案

我的建议是使用 NSAttributedString 并使用 CADisplayLink 刷新标签。像这样:

CADisplayLink *timer = [CADisplayLink displayLinkWithTarget:self selector:@selector(animatePartOfText)];
[timer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

-(void)animatePartOfText
{
//calculate the size
CGFloat size = 0 ;//......
self.textLable.attributedText = [self makeTextWithPartSize:size];
}

-(NSAttributedString*)makeTextWithPartSize:(CGFloat)size
{
NSAttributedString *firstPart = [[NSAttributedString alloc] initWithString:@"Meet me " attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}];
NSAttributedString *animatedPart = [[NSAttributedString alloc] initWithString:@"today" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:size]}];
NSAttributedString *lastPart = [[NSAttributedString alloc] initWithString:@" at 3 p.m" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}];
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString:firstPart];
[text appendAttributedString:animatedPart];
[text appendAttributedString:lastPart];
return text;
}

我不确定性能如何,但它应该可以。

关于ios - 动画转换 UILabel 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com