私はXCodeで新しいビューベースのアプリケーションを作成しました。 ViewControllerで CATransactionがアニメ化しない
は、私が変更しただけのコードは次のようになります。- (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のすべてのものを手に入れました。
「newView.layer.frame = CGRectMake(20,20,220,220);」という行はありません。ありますか? 'layer'プロパティは、UIViewのCALayerにアクセスします。それはそれをアニメートする必要があります、正しい? – mazniak
あなたが正しいです、私はその行を誤解しました。その場合、あなたがやっていることはアニメーション化する必要があります。 UIViewのbegin/commitアニメーションブロックを使用するのはちょっときれいですが、同じように動作するはずです。 –
私が考えていることは、新しいサブビューを追加した後、アニメーションをトリガーする前に、実行ループが終了しないということです。したがって、ビューを最後の位置に配置するだけです。アニメーションコードを別のメソッドに移動し、performSelector:withObject:afterDelay:を使用してそのメソッドをトリガーしてみましょう。遅延時間は0.01秒です。これは、サブビューが追加された後にアニメーションを有効にするはずです。 –