(iOS 5.1、XCode 4.4)私が取り組んでいるプロジェクトには、同じUIViewのフレームプロパティを(それぞれサイズと位置を設定するために)設定する2つのコントローラーがあり、時間的にオーバーラップする別々のアニメーションブロックにあります(2番目のアニメーションブロックは最初のブロックが終了する前に開始されます)。これにより、UIViewの位置に奇妙なジャンプ(アニメーションなしの変更)が発生するようです。
再現するための最小限の例(新しいシングルビュープロジェクト(iphone)のviewcontrollerに配置し、アクションメソッドにボタンを接続します)。
@interface ViewController ()
@property (nonatomic, strong) UIView *viewA;
@end
@implementation ViewController
- (IBAction)buttonPressed
{
// Animate
[UIView animateWithDuration:5 animations:^{
self.viewA.frame = CGRectMake(0, self.viewA.frame.origin.y, 320, 200);
}];
[UIView animateWithDuration:5 animations:^{
self.viewA.frame = CGRectMake(0, 200, 320, self.viewA.frame.size.height);
}];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.viewA = [[UIView alloc] init];
self.viewA.backgroundColor = [UIColor orangeColor];
self.viewA.frame = CGRectMake(0, 100, 320, 100);
[self.view addSubview:self.viewA];
}
@end
ボタンを押すと、ビューが約50ピクセル(移動距離の半分)ジャンプするのがわかります。
なぜこれが起こっているのか、および/またはこの問題に対処する方法を誰かが知っているなら、私はあなたから聞いてみたいです。前もって感謝します、
パトリック