矢印の形をしたビューをアニメートしたくないので、左から右、左から右などにアニメートしたいと思います。
以下のコードは機能していません。パスが必要だと思いますが、UIViewブロックアニメーションでそれを行う方法がわかりません。
[UIView animateWithDuration:.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
controller.view.frame = frame1;
controller.view.frame = frame2;
} completion:^(BOOL finished) {
}];
UIViewAnimationOptionAutoreverse
オプションを使用できます。以下のコードを試してください:
UIView * testView = [[UIView alloc] initWithFrame:CGRectMake(20.0f, 100.0f, 300.0f, 200.0f)];
[testView setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:testView];
[UIView animateWithDuration:0.3f
delay:0.0f
options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
animations:^{
[testView setFrame:CGRectMake(0.0f, 100.0f, 300.0f, 200.0f)];
}
completion:nil];
[testView release];
右から左、左から右への移動を繰り返します...スムーズに。
frame1
が開始位置であり、frame2
が繰り返し前の終了位置であると想定します。
問題は、アニメーションが実行ループの最後に計算されるため、frame1
が無視され、ビューが単にframe2
に移動されることです。 frame1
の設定をブロックの外に移動すると、正常に機能するはずです。アニメーションを再生および転送する場合は、autoreverse
でUIViewAnimationOptionAutoreverse
にする必要があります。