Я хотел бы повернуть UIImageView на 90 градусов по длине представления iPhone с помощью imageView.transform = CGAffineTransformMakeRotation(degrees * M_PI/180);, и мне было интересно, как я могу реализовать это, когда представление перетаскивается влево пользователем ( и, следовательно, также возможность поворота «назад», если вид перетаскивается вправо). Спасибо!

enter image description here

0
daspianist 13 Сен 2013 в 02:13
Что ты уже испробовал? С какой частью у вас проблемы? Перетаскивание представления? Изменить положение / поворот?
 – 
ssantos
13 Сен 2013 в 02:29
Я добавил UIPanGestureRecognizer, и перетаскивание работает. Однако у меня возникли проблемы с выяснением того, как добавить преобразования UIImageView во время перетаскивания, а также повернуть представление назад, если пользователь панорамирует правильно.
 – 
daspianist
13 Сен 2013 в 03:03

1 ответ

Лучший ответ

Что касается перемещения представления, вы можете сделать это, обновив его свойство frame следующим образом.

view.frame = CGRectMake(view.frame.origin.x + xOffset, view.frame.origin.y, view.frame.size.width, view.frame.size.height);

Вы также можете добавить и observer, который прослушивает ваши view frame изменения.-

[view addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld context:NULL];

Здесь вы в основном запрашиваете уведомление при изменении свойства frame объекта view. Вы можете обработать это уведомление, используя следующий метод:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if([keyPath isEqualToString:@"frame"]) {
        // Change object rotation depending on frame.origin.x
    }
}

Чтобы вычислить вращение на основе положения x, вам нужно будет выполнить некоторые математические вычисления. Кроме того, я полагаю, что повернуть изображение по центру немного сложно, возможно, вам будет полезен пост, приведенный ниже.

http://www.informit.com/blogs/blog.aspx?uk=Ask-Big-Nerd-Ranch-Rotating-an-iPhone-View-Around-a-Point

Дело в том, что вам не придется беспокоиться о том, куда вы панорамируете, поскольку вращение вида будет обновляться в соответствии с его положением каждый раз, когда оно изменяется.

Надеюсь, это поможет :)

1
ssantos 13 Сен 2013 в 03:29
Спасибо - попробую сегодня вечером!
 – 
daspianist
13 Сен 2013 в 03:23