По сути, я просто хотел бы прикоснуться к изображению и заставить его перемещаться пальцем по экрану без использования Image.center = touchPosition. Я не хочу, чтобы центр привязался к моему пальцу. Я хочу переместить изображение из любой точки, к которой я прикасаюсь.
1 ответ
Стандартный способ справиться с этим, на который @ richard-j-ross-iii намекал в комментарии, - это сохранить разницу между центром представления и позицией касания при начале перетаскивания, а затем сохранить эту разницу во время перетаскивания. В вашем методе touchesBegan:withEvent:
сохраните смещение, например:
_dragOffsetFromCenter = CGSizeMake(touchLocationInImageView.x - centerOfImageView.x, touchLocationInImageView.y - centerOfImageView.y);
Тогда в touchesMoved:withEvent:
вы можете сохранить то же смещение, например:
myImageView.center = CGPointMake(touchLocation.x - _dragOffsetFromCenter.x, touchLocation.y - _dragOffsetFromCenter.y);
touches:*
получают NSSet
объектов UITouch, когда они вызываются UIKit. Сделайте одно из касаний в этом наборе (если вы не поддерживаете мультитач в этих представлениях, просто используйте [touches anyObject]
, чтобы получить одно касание), затем touchLocationInImageView = [theTouch locationInView:myImageView];
[theTouch locationInView:myImageView]
может не работать для вас, потому что изображение перемещается. Система координат меняется на протяжении всего перетаскивания. Лучше использовать согласованную систему координат на протяжении всего перетаскивания, (например) работая с позициями касания в супервизоре просмотра изображения.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.