現在、カスタムViewControllerコンテナーを使用するアプリケーションを作成しています。一度に複数のビューが画面に表示され、そのうちの1つをタップすると、選択したビューコントローラが全画面にアニメーション化されます。そうすることで、選択したビューコントローラのサブビューも拡大縮小します(フレーム、フォントサイズなど)。ただし、UILabelのフォントプロパティはアニメートできないため、問題が発生します。私は複数の解決策を試しましたが、すべてがうまくいきません。
私が試した解決策は次のとおりです。
- 拡大表示のスクリーンショットを撮り、変更をアニメーション化します(Flipboardの場合と同様)
- 変換プロパティを使用してアニメーション化する
- UIScrollViewをズームアウトし、フルスクリーンにしたときにズームインします。
- 設定は、AdjustsFontSizeToFitWidthをYESに設定し、アニメーションの前にfontSizeを設定します
これまでのところ、1つが最善の解決策でしたが、私はそれに満足していません。
[UIView animate ..]を使用してスムーズにアニメーション化するUILabelの代替品がある場合は、他の提案を探しています。
これは、UILabelに実行させたいことと似た良い例です。http: //www.cocoawithlove.com/2010/09/zoomingviewcontroller-to-animate-uiview.html
編集:このコードは機能します
// 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];
}];