У меня та же проблема, что и в ЗДЕСЬ .. Пожалуйста, помогите!
У меня есть UIViewController, который поддерживает прокрутку и масштабирование UIImageView.Это прекрасно работает.
Я пытаюсь добавить поддержку для изменения ориентации.По разным причинам мне нужно сделать это, вращая только UIImageView, а не UIViewController.
У меня работает вращение изображения, но если при повороте изображения пользователь укачивает изображение, размер и расположение изображения меняются (например, изображение прыгает в сторону, становится слишком маленьким, непохоже, знают, где находятся экстенты вида прокрутки и т. д.).
Основное содержимое файла h:
@interface ImageViewController : UIViewController <UIScrollViewDelegate>
{
IBOutlet UIScrollView *scrollView;
IBOutlet UIImageView *imageView;
}
@property (nonatomic, assign) UIScrollView *scrollView;
@property (nonatomic, assign) UIImageView *imageView;
@end
Поддержка масштабирования:
-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return imageView;
}
Поддержка прокрутки (устанавливается после загрузки изображения):
[scrollView setContentSize: CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height)];
Поддержка поворота изображения при изменении ориентации:
-(void)orientationChanged:(NSNotification *)note
{
UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
CGFloat angle = 0;
switch (orientation)
{
case UIDeviceOrientationLandscapeLeft:
angle = M_PI/2.0f;
break;
case UIDeviceOrientationLandscapeRight:
angle = -M_PI/2.0f;
break;
case UIDeviceOrientationPortraitUpsideDown:
angle = M_PI;
break;
default:
break;
}
self.imageView.transform = CGAffineTransformMakeRotation(angle);
}
Я подозреваю, что проблема в том, что scrollView сбит с толку, потому что размер изображения изменился из-за поворота, но я не знаю, как это исправить.Есть идеи?FWIW, масштабирование работает, если я изменяю ориентацию, но затем изменяю его обратно на «вертикальный» перед увеличением.