|
Май
14
|
Приветствую в четвертой, заключительной части урока, где мы освоим панорамирование — перемещение изображения влево–вправо. Здесь мы частично будем работать с подготовленным в предыдущих материалах кодом.
Наша задача — сделать так, чтобы изображение сдвигалось влево или вправо, когда пользователь, нажав на него, перемещает по экрану палец. Для этого воспользуемся методом touchesMoved, исходный код для которого будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if([timer isValid]) [timer invalidate]; NSSet *allTouches = [event allTouches]; switch ([allTouches count]) { case 1: { //Изображение панорамируется (смещается влево/вправо) UITouch *touch = [[allTouches allObjects] objectAtIndex:0]; CGPoint centerPoint = [touch locationInView:[self view]]; [imgView setCenter:centerPoint]; } break; case 2: { //Изображение увеличивается или уменьшается. UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0]; UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1]; //Рассчитывается расстояние между двумя пальцами. CGFloat finalDistance = [self distanceBetweenTwoPoints:[touch1 locationInView:[self view]] toPoint:[touch2 locationInView:[self view]]]; //Проверка на увелечение/уменьшение. if(initialDistance > finalDistance) { NSLog(@"Zoom Out"); } else { NSLog(@"Zoom In"); } } break; } } |
Поскольку для смещения изображения влево–вправо достаточно одного касания, данный код выполняется в случае, если общее число касаний равно одному. Сначала получаем первое касание, потом — его положение. Перемещаем изображение, делая точку касания центром UIImageView.
Надеюсь, теперь вы больше знаете об использовании Multi Touch в приложениях для iPhone. По тому же базовому принципу можно работать с любым приложением. Комментируем, делимся опытом :).

(2 голосов, средний: 4.00 из 5)
Последние комментарии
Подскажите пожалуйста… Вот...
Код не открывает страницы по простой причине -...
можно было бы использовать сглаживание MSAA, графика была бы на...