1. ホーム
  2. iphone

UILabelのフォントサイズ変更のアニメーション化

2023-10-29 10:11:52

質問

現在、カスタムビューコントローラコンテナを使用したアプリケーションを作成しています。複数のビューが一度に画面に表示され、そのうちの1つをタップすると、選択されたビューコントローラがアニメーションでフルスクリーンになります。その際、選択されたビューコントローラーのサブビューも同様に拡大縮小します (フレーム、フォントサイズなど)。ただし、UILabel のフォント プロパティはアニメーション可能ではないため、問題が発生しました。複数の解決策を試しましたが、すべて平たく言えば最悪です。

私が試した解決策は次のとおりです。

  1. 拡大表示のスクリーンショットを撮り、変化をアニメーション化する (Flipboard が行っている方法に似ている)
  2. transform プロパティを使用してアニメーション化する
  3. UIScrollViewをズームアウトさせ、フルスクリーンにしたときにズームインさせる。
  4. adjustsFontSizeToFitWidthをYESに設定し、アニメーションの前にfontSizeを設定する。

1は今のところ最良の解決策ですが、満足はしていません。

私は、誰かが他の提案を持っているか、[UIView animate...]を使用してスムーズにアニメーションするUILabelの代用品を探しています。

私がUILabelにさせたいと思っていることに似た良い例がここにあります。 http://www.cocoawithlove.com/2010/09/zoomingviewcontroller-to-animate-uiview.html

EDIT: このコードは動作します

// Load View

self.label = [[UILabel alloc] init];
self.label.text = @"TEXT";
self.label.font = [UIFont boldSystemFontOfSize:20.0];
self.label.backgroundColor = [UIColor clearColor];

[self.label sizeToFit];

[self.view addSubview:self.label];

// Animation

self.label.font = [UIFont boldSystemFontOfSize:80.0];
self.label.transform = CGAffineTransformScale(self.label.transform, .25, .25);
[self.label sizeToFit];

[UIView animateWithDuration:1.0 animations:^{
    self.label.transform = CGAffineTransformScale(self.label.transform, 4.0, 4.0);
    self.label.center = self.view.center;
} completion:^(BOOL finished) {

    self.label.font = [UIFont boldSystemFontOfSize:80.0]; 
    self.label.transform = CGAffineTransformScale(self.label.transform, 1.0, 1.0);

    [self.label sizeToFit];

}];

どのように解決するのですか?

のサイズとフォントを変更することができます。 UILabel のフォントを変更する方法の例を示します。 UILabel のフォントを変更する方法の例を示します。

    yourLabel.font = [UIFont boldSystemFontOfSize:35]; // set font size which you want instead of 35
    yourLabel.transform = CGAffineTransformScale(yourLabel.transform, 0.35, 0.35); 
    [UIView animateWithDuration:1.0 animations:^{
        yourLabel.transform = CGAffineTransformScale(yourLabel.transform, 5, 5);
    }];