5

拡大と縮小をアニメーション化するUILabelがあります。サイズが変更されている間、左下隅を静止させて、常に下部ツールバーの真上に表示されるようにする必要があります。ラベルを大きくするために次のコードを使用しています。

[UIView animateWithDuration:kAnimationDuration delay:0.0 options:UIViewAnimationCurveEaseInOut 
                 animations:^{  
    CGFloat lblHeight = 42.0f;
    [label setFrame:CGRectMake(0.0, 
                CGRectGetMaxY(self.view.bounds) - kBottomBarHeight - lblHeight, 
                CGRectGetMaxX(self.view.bounds), 
                lblHeight)];                
} completion:^(BOOL finished) { }];

縮小するために、lblHeightが17.0fに設定されていることを除いて、同じロジックを使用します

ビューは正しく拡大しますが、縮小しようとすると、フレーム変更アニメーションがアニメーション化されません。それは新しいサイズにブリップしてから、新しい原点/場所にアニメートします。フレームの変更をアニメーション化する必要があります。誰かが私が間違っていることを見ることができますか?

4

2 に答える 2

2

いくつかいじくり回した後、私は次のことを行うことで、目的の動作を得ることができました。

Expandメソッドでは、UIViewアニメーションを使用してフレームを変更します。縮小方法では、UIViewアニメーションを使用して境界と中心を変更します。

なぜこれが機能するのか少し戸惑いますが、フレームで縮小しようとしても機能しません。誰かがこれについての洞察を共有できれば、それは素晴らしいことです。

于 2012-06-01T12:50:04.463 に答える
0

アニメーション化にフレームを実際に使用するのではなく、ラベルの変換プロパティを使用する必要があります。

ただし、1つのコーナーを静止させておきたいので、CoreAnimationを使用するのが最善だと思います。には、レイヤーが回転するポイントを決定するCALayerというプロパティがあり、拡大/縮小効果にも有効であると確信しています。anchorPoint

于 2012-05-27T18:33:47.160 に答える