我寫了這個代碼,您:
- (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];
}];
}
在你提到的*不*使用任何額外的框架,除了在iOS SDK中通用的標準的問題,接受的答案,而*不會*事業堆棧溢出是因爲沒有遞歸(Objective-C委託方法調用不會堆積在堆棧上,因爲堆棧每次都會清除)。 – Greg
基本上,你的問題是你找到的問題的重複。 – Greg
那麼有沒有辦法將它作爲一個重複項來關閉,或者我只是刪除了這個問題? – Kevin