CATransactionがアニメートしない
-
03-07-2019 - |
質問
XCodeで新しいビューベースのアプリケーションを作成しました。
ViewControllerでは、変更した唯一のコードは次のようになります。
- (void)viewDidLoad {
[super viewDidLoad];
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
newView.backgroundColor = [UIColor redColor];
[self.view addSubview:newView];
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransactionAnimationDuration];
newView.layer.frame = CGRectMake(20,20,220,220);
[CATransaction commit];
}
アプリケーションが読み込まれるとすぐに0.5秒間アニメーションする赤い正方形が作成されます。問題は、アニメーション化されないことです。理由がわかりません。すべての変数を分離するためにこの単純なプロジェクトを作成しましたが、まだ動作しません。
Core-Animationの読み物の正しい方向を教えてくれたり、誰かを助けてくれたりできますか。私はすでにAppleのものすべてを試しました。
解決
CALayerにプロパティを設定すると、コードは期待どおりにアニメーション化されます(デフォルトでアニメーション化されます)。 UIViewsをアニメーション化するには、ブロック内のプロパティを次のように変更する必要があります。
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];
// Change properties here
[UIView commitAnimations];
CATransactionは、アニメーションをグループ化して調整するために使用されるか、オブジェクトのグループのアニメーションを手動で無効にします。
他のヒント
誰でも助けてくれたり、Core-Animationの読み物の正しい方向を教えてくれたりしますか。私はすでにAppleのものすべてを試しました。
参照:コアMac OS XおよびiPhone向けのアニメーション:魅力的な動的ユーザーインターフェイスの作成により、ビューおよびレイヤーでのコアアニメーションの優れたウォークスルーが実現します。
所属していません StackOverflow