如何使用 Objective-C 将字符添加到 iOS 中的 UILabel 动画?

Posted

技术标签:

【中文标题】如何使用 Objective-C 将字符添加到 iOS 中的 UILabel 动画?【英文标题】:How can I add characters to an UILabel animated in iOS with Objective-C? 【发布时间】:2016-08-13 14:53:40 【问题描述】:

我尝试了什么

我创建了一个循环遍历 NSMutableArray 的递归函数,并且每次都会通过这个动画博客。这段代码调用了这个方法,因为我认为UILabel上的动画不起作用的问题是它没有在主线程上运行。

[self performSelectorOnMainThread:@selector(writeText:) 
                       withObject:_arrayAllLabels 
                    waitUntilDone:YES];

动画有一个completion 块,它还检查动画是否完成,然后继续调用相同的函数。此外,我添加了一个额外的动画博客,但没有什么能让它能够平滑地将字符添加到标签。

    [UIView animateWithDuration:1.5f
                          delay:1.0f
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^

                         //adding next character to text attribute of UILabel                      
                       completion:^(BOOL finished) 

                       [UIView animateWithDuration:1.0f
                                        animations:^

                          if ( finished )
                            [self performSelectorOnMainThread:@selector(writeText:)
                                                   withObject:_arrayAllLabels
                                                waitUntilDone:YES];

                          
                        completion:nil];

                     ];

长什么样子

我搜索后发现的不正确

我已经环顾了一段时间并试图找到与我的问题相关的问题,但我发现的所有内容都指向一个方向,将 UILabel 的文本更改为另一个文本,没有单个字符

***.com/questions/26402062/sharing-the-text-of-a-uilabel-makes-it-reappear-when-using-uiviewkeyframeanimat ***.com/questions/26703501/fade-between-text-in-a-uilabel-with-delay

有人可以帮忙吗?

【问题讨论】:

这有用吗? github.com/tomknig/TOMSMorphingLabel 【参考方案1】:

UILabel 的 setText 方法是不可动画的。 animateWithDuration:completion: 只会对帧、边界、中心、变换的变化进行动画处理...有关动画属性的列表,请参见此处的 Apple 文档:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html

对于您的问题,您必须忘记使用 animateWithDuration:completion: 并自己创建动画,例如使用 NSTimer 来执行 addLetter: 方法每 x 秒...

【讨论】:

我以前也遇到过这样的问题,但那是很久以前的事了。现在我不确定我是否只是忘记了一些东西(比如 mainThread)。想知道有没有其他方法可以解决这个问题!但我会看看 NSTimer! :) xD 抱歉,我刚刚意识到您在谈论NSTimer,完全正确!如果您停止使用语言太久,就会发生这种情况:)

以上是关于如何使用 Objective-C 将字符添加到 iOS 中的 UILabel 动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据objective-C中的标签号将按钮添加到MutableArray?

如何在Objective-C中将char添加到NSNumber?

如何在 Objective-C 中使用 Swift 字符串枚举?

如何将 watchOS Swift 目标添加到用 Objective-C 编写的 iOS 应用程序中

Objective-C 如何使用 AFNetwork 上传字符串

正确填充 NSString 的 Objective-c 代码?