Самый простой способ - создать подклассы UIImageView
.
Для простого перетаскивания взгляните на код здесь (код заимствован у пользователя MHC):
UIView drag (изображение и текст)
Поскольку вы хотите перетащить путь Безье, вам придется изменить touchesMoved:
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *aTouch = [touches anyObject];
//here you have location of user's finger
CGPoint location = [aTouch locationInView:self.superview];
[UIView beginAnimations:@"Dragging A DraggableView" context:nil];
//commented code would simply move the view to that point
//self.frame = CGRectMake(location.x-offset.x,location.y-offset.y,self.frame.size.width, self.frame.size.height);
//you need some kind of a function
CGPoint calculatedPosition = [self calculatePositonForPoint: location];
self.frame = CGRectMake(calculatedPosition.x,calculatedPosition.y,self.frame.size.width, self.frame.size.height);
[UIView commitAnimations];
}
Что именно вы хотели бы сделать в -(CGPoint) calculatePositionForPoint:(CGPoint)location
зависит от тебя. Например, вы можете рассчитать точку на пути Безье, ближайшую к location
. Для простого теста вы можете сделать:
-(CGPoint) calculatePositionForPoint:(CGPoint)location {
return location;
}
По пути вам придется решать, что произойдет, если пользователь удивится далеко от вашего
предварительно рассчитанный путь Безье.