私はあなたのためにこのコードを書きました:
- (CGFloat) distanceBetweenTwoPoints: (CGPoint) point1 : (CGPoint) point2 {
CGFloat dx = point2.x - point1.x;
CGFloat dy = point2.y - point1.y;
return sqrt(dx*dx + dy*dy );
}
#define kMovingSpeed 25 //pixel per second
- (void) floatView : (id) view_{
UIView *view = (UIView *)view_;
CGPoint viewCenter = view.center;
CGPoint nextCenter = CGPointMake(arc4random() % 320, arc4random() % (([self.view bounds].size.height > 480)?568:460));//or chech for orientation as well
if (CGPointEqualToPoint(viewCenter, nextCenter))
[self floatView:view];
float distance = [self distanceBetweenTwoPoints:viewCenter :nextCenter];
double time = distance / kMovingSpeed;
[UIView animateWithDuration:time
animations:^{
[view setCenter:nextCenter];
}
completion:^(BOOL finished) {
[self floatView:view];
}];
}