Проблемы с прокруткой и масштабированием после поворота UIImageView - PullRequest
0 голосов
/ 12 мая 2011

У меня та же проблема, что и в ЗДЕСЬ .. Пожалуйста, помогите!

У меня есть 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, масштабирование работает, если я изменяю ориентацию, но затем изменяю его обратно на «вертикальный» перед увеличением.

1 Ответ

0 голосов
/ 12 мая 2011

Перерисовайте изображение, удалив его из srollView, и прочитайте его снова.

...