Я создаю приложение, в котором пользователи могут создавать свои собственные сцены с изображениями, присутствующими там. Я создал кнопки в качестве изображений, теперь мне нужен какой-то код, который позволяет пользователю перетаскивать изображения (кнопки) в область просмотра конкретного изображения.Пользователи должны иметь возможность перетаскивать изображения и размещать их на изображении в ios
Пользователи должны иметь возможность перетаскивать изображения и размещать их на изображении в ios
ответ
Вы можете добиться этого с помощью жестов касания (например, коснитесь первого изображения, нажмите на изображение целевого изображения), но это не очень интуитивно понятно. Выполнение правильного перетаскивания с помощью UIPanGestureRecognizer будет более интуитивно понятным для вашего конечного пользователя.
Технически вы не перетаскиваете изображение из изображения, а скорее будете перетаскивать изображение. (Само изображение не имеет визуального представления без представления изображения.) И когда вы отпустите, вы сможете оживить смену рамок изображения, чтобы завершить иллюзию.
Если у вас NSArray из imageViews, вы можете добавить жест их надтаблицы:
@property (nonatomic, strong) NSMutableArray *imageViews;
- (void)viewDidLoad
{
[super viewDidLoad];
[self createImageViewArray];
UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:gesture];
}
- (void)createImageViewArray
{
self.imageViews = [NSMutableArray array];
}
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
static UIImageView *draggedImage = nil;
static CGRect draggedImageOriginalFrame;
CGPoint location = [gesture locationInView:gesture.view];
if (gesture.state == UIGestureRecognizerStateBegan)
{
draggedImage = [self determineImageForLocation:location];
if (draggedImage)
{
draggedImageOriginalFrame = draggedImage.frame;
[draggedImage.superview bringSubviewToFront:draggedImage];
}
}
else if (gesture.state == UIGestureRecognizerStateChanged && draggedImage != nil)
{
CGPoint translation = [gesture translationInView:gesture.view];
CGRect frame = draggedImageOriginalFrame;
frame.origin.x += translation.x;
frame.origin.y += translation.y;
draggedImage.frame = frame;
}
else if (draggedImage != nil && (gesture.state == UIGestureRecognizerStateEnded ||
gesture.state == UIGestureRecognizerStateCancelled ||
gesture.state == UIGestureRecognizerStateFailed))
{
UIImageView *droppedOver = nil;
if (gesture.state == UIGestureRecognizerStateEnded)
droppedOver = [self draggedImageView:draggedImage toLocation:location];
if (droppedOver == nil)
{
[UIView animateWithDuration:0.25
animations:^{
draggedImage.frame = draggedImageOriginalFrame;
}];
}
else
{
[droppedOver.superview bringSubviewToFront:droppedOver];
[UIView animateWithDuration:0.25
animations:^{
draggedImage.frame = droppedOver.frame;
droppedOver.frame = draggedImageOriginalFrame;
}];
}
}
}
- (UIImageView *)draggedImageView:(UIImageView *)draggedView toLocation:(CGPoint)location
{
for (UIImageView *imageview in self.imageViews)
if (CGRectContainsPoint(imageview.frame, location) && imageview != draggedView)
return imageview;
return nil;
}
- (UIImageView *)determineImageForLocation:(CGPoint)location
{
return [self draggedImageView:nil toLocation:location];
}
дать ему преимущество – 2014-08-21 08:50:20
- 1. C++. Только авторизованные пользователи AD должны иметь возможность запускать программу
- 2. 10 пользователи должны иметь возможность запускать один и тот же макрос в Excel
- 3. Должны ли пользователи XMPP находиться в одной группе, чтобы иметь возможность общаться друг с другом?
- 4. Doxygen - групповые функции и иметь их поиск, возможность в индексе
- 5. iOS: изменение размера изображения на прямоугольном изображении
- 6. Изображения можно перетаскивать и перетаскивать в текстовое поле в jqgrid
- 7. Обнаружить точки на изображении и сравнить их
- 8. Как загружать изображения на устройство, чтобы иметь возможность установить их в качестве обоев
- 9. Rails - пользователи должны иметь только одну строку данных в таблице
- 10. Перекрытие изображения на изображении ... на изображении (или в контейнере)
- 11. не удался иметь возможность просматривать изображения в ионных 2
- 12. Событие на изображении в iOS
- 13. Как перетаскивать изображения/объекты в Canvas после их масштабирования/масштабирования?
- 14. Как ссылаться на изображения и другие объекты в Xcode и где их физически размещать?
- 15. Как плавно перетаскивать окно изображения в WPF?
- 16. Почему изображения для текстур на iPhone должны иметь два параметра?
- 17. обнаружение линий и их положение на изображении
- 18. Только возможность перетаскивать перетаскиваемый элемент один раз
- 19. Создание сайта на рельсах, где пользователи смогут присоединиться к группам и иметь возможность взаимодействовать с группой
- 20. Чтобы иметь возможность cntrl-перетаскивать сцену между представлением на сцену раскадровки, каковы предпосылки
- 21. Должны ли изображения иметь атрибут «имя»?
- 22. Нет изображения на изображении
- 23. OCR на изображении - iOS
- 24. asp.net динамически добавлять usercontrols и размещать их
- 25. перетаскивать изображения с angularjs
- 26. Проверить наличие на изображении в iOS
- 27. Как включить отчеты RDL в пакет SharePoint и иметь возможность развертывать их на разных серверах
- 28. Штабелирование панелей в JQuery. Панели имеют изображения в качестве их содержимого и должны иметь небольшую вкладку для каждого изображения, видимого
- 29. вызывают разные html-файлы, которые содержат графики и накладывают их, чтобы иметь возможность сравнивать их
- 30. Как центрировать ярлык на изображении в iOS?
Я новичок в разработке, это мой первый проект. – user2368693