2015-10-23 5 views
0

У меня есть следующий код, который позволяет пользователю поворачивать изображение на экране, нажимая кнопку.UIScrollView zoom удаляет преобразование из UIImageView

self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotationAmount); 

Это изображение сидит внутри UIScrollView, что позволяет пользователю увеличивать масштаб изображения. Проблема в том, что когда пользователь увеличивает масштаб, сбрасывается преобразование. Я могу сохранить значение преобразования, а затем повторно применить его после масштабирования, но изображение выглядит так, как будто оно подпрыгивает между вращающейся версией и без вращения.

Есть ли способ сохранить преобразование во время масштабирования?

Вот код Scrollview

self.scrollView.minimumZoomScale=1.0; 
self.scrollView.maximumZoomScale=6.0; 
self.scrollView.contentSize=CGSizeMake(screenHeight, screenWidth-toolBarHeight); 
self.scrollView.delegate=self; 
[_scrollView setContentMode:UIViewContentModeScaleAspectFit]; 
[_scrollView sizeToFit]; 
[_scrollView setContentSize:CGSizeMake(_imageView.frame.size.width, _imageView.frame.size.height)]; 
+0

Вы можете вправить код, в котором вы увеличиваете масштаб фотографии? – anhtu

ответ

2

Проблема заключается в том, что когда пользователь изменяет масштаб изображения преобразования сбрасывается

Поскольку , что является тем, что масштабирование. Это приложение масштабного преобразования к изображению. Это преобразование масштаба заменяет ваше преобразование вращения.

Вы можете попробовать реализовать метод делегата zoom, чтобы повторно использовать преобразование вращения снова и снова по мере увеличения пользователем. Но не забудьте применить его по отношению к масштабному преобразованию или потерять зум.

+1

Да, это точно. Более простым обходным путем является другой UIView, который переносит представление содержимого (или scrollView), чтобы вы могли применять свои собственные преобразования, не мешая реализации scrollView. Вам часто понадобится одно и то же обходное решение, если вы хотите добавить распознаватели жестов в верхней части scrollViews и их подклассов. – Jef

+0

@Jef очень хорошая идея, спасибо за добавление этого. – matt

+0

@Jef, обертка - отличная идея! – HiveHicks

1

Я должен был это рассказать давным-давно, а не просто комментировать ответ Мэтта, извините.

Как матовый alludes, UIScrollView работает, это волшебство (zoom & pan), манипулируя свойством преобразования его содержимого. Если вы попытаетесь манипулировать свойством transform на одном и том же UIView, вы будете саботировать усилия scrollView. Вам нужно применить свое вращение на другом уровне в иерархии представлений, подумайте о том, чтобы вращать сам scrollView. Best

Смежные вопросы