【问题标题】:How can I add characters to an UILabel animated in iOS with Objective-C?如何使用 Objective-C 将字符添加到 iOS 中的 UILabel 动画?
【发布时间】: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 的文本更改为另一个文本,没有单个字符

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

有人可以帮忙吗?

【问题讨论】:

标签: ios objective-c iphone uilabel uiviewanimation


【解决方案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,完全正确!如果您停止使用语言太久,就会发生这种情况:)
猜你喜欢
  • 1970-01-01
  • 2016-08-16
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多