【问题标题】:Animate change font of a UILabelUILabel 的动画更改字体
【发布时间】:2013-06-24 21:12:18
【问题描述】:

我需要一种用动画来改变 UILabel 字体的方法。我看到了很多方法来动画字体大小的变化,但我需要一种方法来改变它的类型(例如粗体字)。

【问题讨论】:

    标签: ios objective-c uilabel uifont


    【解决方案1】:

    两个字体之间没有离散映射(在数学意义上)。

    如果您可以通过渐变 (10.1, 10.2, 10.3, ...) 从 10 号到 11 号,则不存在“helvetica neue 和 helvetica neue bold 之间的 45%”之类的东西。

    您可以做的最接近的方法是在单个字母的 CGPath 之间进行变形,但这需要使用 CoreText 进行大量工作。

    同时,我只是建议您执行一个简单的淡入淡出。

    也许在未来(眨眼,眨眼)会有一些框架来帮助你完成这类任务。

    【讨论】:

      【解决方案2】:

      这可能对搜索此答案的人有所帮助:

      要从一种字体淡化到另一种字体,请执行以下操作:

      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 显示不同的字体)

      【讨论】:

        【解决方案3】:

        您可以像这样设置新的大小并在动画后更改标签。

        [UIView animateWithDuration:0.9 animations:^{
                label.frame = (CGRect){ CGPointMake(51, 150), label.bounds.size };
            } completion:^(BOOL finished) {
                label.font=[UIFont boldSystemFontOfSize:15];
                // etc.
            }];
        

        享受!!

        【讨论】:

        • 不是真的..我想动画字体过渡..这只是在动画结束时改变它。
        【解决方案4】:

        使用 uiview animateWithDuration。在块内更改字体类型(粗体)

        【讨论】:

          【解决方案5】:
          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];
                               //}
                           }];
          

          }

          此代码可能会回答您的问题

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-24
            • 1970-01-01
            • 1970-01-01
            • 2011-01-07
            • 1970-01-01
            • 1970-01-01
            • 2011-06-19
            • 1970-01-01
            相关资源
            最近更新 更多