基本的に、画面上にあるUIViewオブジェクトの配列があります。それらはランダムに動き回っています。各オブジェクトを結ぶ線が必要です。
すべての移動オブジェクトを含むUIViewのdrawRectメソッドで、それらの間に線を描画します。次に、それが完了すると、オブジェクトごとに以下のメソッドが呼び出されます
-(void)animateIcon:(Icon*)icon{
[UIView animateWithDuration:(arc4random() % 100 * 0.1)
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
icon.frame = CGRectMake((arc4random() % 320), (arc4random() % ((int)self.frame.size.height - 70)), 52, 52);
}
completion:^(BOOL finished){[self animateIcon:icon];}];
}
基本的に、オブジェクトが移動しても、線はオブジェクトにアタッチされたままになります。[selfsetNeedsDisplay]を呼び出すことができれば; フレームがまったく変更されるたびに、drawRectメソッドは線を再描画しますが、これを実現する方法がわかりません。
フレームの変更(以下に表示)にオブザーバーを設定しようとしましたが、アニメーションが終了したときにのみトリガーされ、オブジェクトがアニメーションの途中であるため、フレームの変更をキャッチしません。
[icon addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld context:NULL];
どんな体もアイデアを持っていますか?