1

ラベルを移動してサイズを変更しようとしていますが、ラベルのサイズがすぐに変更されてから所定の位置に移動します。最初に、コメントアウトされた lbl.frame 行を単純に試しました。次に、この質問を見つけました:

UIView のサイズを変更しながらアニメーション化する方法

contentMode 以外のすべてのコードを追加しました。これは私が望んでいたことでしたが、ラベルが縮小したときにラベルのフォントが下向きに調整されませんでした。(私は xib に合うように調整します)。最後に contentMode 行を追加すると、元のフレーム行と同じ結果が得られました。最初にすぐに収縮して動きをアニメートします。

    lbl.contentMode = UIViewContentModeRedraw;
    [UIView animateWithDuration:1.0 delay:0.0
                        options:(UIViewAnimationOptionAllowUserInteraction)
                     animations:^{
                         //lbl.frame = CGRectMake(x, mStartingLine.frame.origin.y+mStartingLine.frame.size.height, 100, 100);
                         CGRect theBounds = lbl.bounds;
                         CGPoint theCenter = lbl.center;
                         theBounds.size.height = 100;
                         theBounds.size.width = 100;
                         theCenter.y = mStartingLine.frame.origin.y+mStartingLine.frame.size.height+50;
                         theCenter.x = x;
                         lbl.bounds = theBounds;
                         lbl.center = theCenter;
                     }
                     completion:nil
     ];
4

1 に答える 1

0

テキストの自動サイズ変更機能が Core Animation で動作しないのではないかと思われます。

私がお勧めするのは、ラベルを最終的なサイズに設定し(境界を使用して)、変換を適用して元のサイズに縮小することです。それらの最終的な効果は、同じ見かけのサイズにとどまることです。

最後に、animateWithDuration:animations: を使用して、ビューの変換を恒等変換に戻し、新しいサイズに拡大します。

これによりどのような描画アーティファクトが発生するかはわかりません。試してみる必要があります。

于 2012-05-17T11:23:40.200 に答える