UIImageView в UIScrollView: ошибка панорамирования - PullRequest
0 голосов
/ 18 ноября 2011

Я делаю простой просмотрщик фотографий, который позволяет масштабировать и панорамировать.

, поэтому в IB я создаю UIScrollView, содержащий UIImageView:

enter image description here

Затем яможно настроить его для размещения фотографии, как только она станет доступна:

- (void) imageCaptureCompleted 
{
    {
        UIImage* I = self.frontCamView.stillImage;

        self.imageView.bounds = CGRectMake(0, 0, I.size.width, I.size.height );
        self.imageView.image = I;

        // - - - 

        self.scrollView.maximumZoomScale = 4.0;
        self.scrollView.minimumZoomScale = 0.75;
        self.scrollView.clipsToBounds = YES;
        self.scrollView.delegate = self;

        self.scrollView.contentSize = self.imageView.bounds.size;
    }

    [self hideCaptureView];

    UIImageWriteToSavedPhotosAlbum( self.frontCamView.stillImage, 
                                   self, 
                                   @selector( image: didFinishSavingWithError: contextInfo: ), 
                                   nil );
}

- (UIView *) viewForZoomingInScrollView: (UIScrollView *) scrollView
{
    return self.imageView;
}

Это почти работает.Это действительно позволяет мне панорамировать и масштабировать.

Однако, это панорамирование слишком далеко!Это должно прийти в норму, когда это касается правого края фотографии.но вместо этого он ведет себя так, как будто фотография находится в большем черном прямоугольнике.

Я настроил маски с автоматическим изменением размеров вида прокрутки точно так же, как на рисунке выше.

Какзаставить его работать?

PS Я уже понял это;Я поставлю ответ для потомков.

1 Ответ

0 голосов
/ 18 ноября 2011

Этот код сортирует его:

        // self.imageView.bounds = CGRectMake(0, 0, I.size.width, I.size.height );
        self.imageView.image = I;

        [self.imageView sizeToFit];

Однако я не могу понять, почему это изменение необходимо.Если кто-то может сказать мне, я приму этот ответ (в этом случае, пожалуйста, вставьте вышеуказанный код, тогда я могу удалить этот ответ).

...