0

UIViewアニメーションで奇妙な動作に直面しています。いくつかのUIViewアニメーションを使用するiPadアプリケーションを開発しています。

すべてのアニメーションの長さは0.5に設定されています。最初はアプリケーションを起動すると、すべてのアニメーションが正常に機能しています。ただし、アニメーションを継続して使用した後は、アニメーションで期間が設定されていないのと同じように、すべてのUIViewの変更がすばやく行われます。

なぜこれが起こっているのかわかりません。他の誰かがこの種の問題に直面しましたか?

以下は私が使用しているアニメーションの1つです。このように私は多くのアニメーションを使用していますが、しばらくするとアニメーションは発生しませんが、アニメーションブロック内のすべてのコードは正常に機能しています

[UIView animateWithDuration:0.5 animations:^{ 
    [tempLabel setFont:titleFont.font]; 
    [tempLabel setTransform: CGAffineTransformMakeRotation((-90 * M_PI / 180))]; 
    tempLabel.frame = CGRectMake(2,0,23,30);   
}];
4

2 に答える 2

2

UIViewクラス参照から、frameプロパティ:

このプロパティへの変更はアニメーション化できます。ただし、transformプロパティに非ID変換が含まれている場合、frameプロパティの値は未定義であり、変更しないでください。その場合、centerプロパティを使用してビューの位置を変更し、代わりにboundsプロパティを使用してサイズを調整できます。

変換も設定している場合は、フレームをアニメートしないでください。代わりに境界と中心を使用してください。

于 2013-03-27T07:38:01.700 に答える
1

あなたが抱えている問題は、毎回コントロールを変換しているようです。初めて変換を適用するとき、コントロールに変換はありませんが、次に変換があります。この場合、次の変換が期待どおりに機能しない可能性があります。 ..次のようにこれを解決するためのいくつかのオプションがあります、私はそれが機能するかもしれないコードを試していません

tempLabel.transform = CGAffineTransformIdentity; 

変換を適用する前に上記のコードを入力すると、適用された変換がリセットされ、新しい変換が新たに適用されます。

tempLabel.transform = CGAffineTransformConcat(tempLabel.transform, YOUR TRANSFORM);

上記は最後の変換に追加されます。

それが役に立てば幸い。

ありがとう。

于 2013-03-27T07:54:31.080 に答える