Как сделать масштабирование UIScrollView до размера UIImage? - PullRequest
0 голосов
/ 02 октября 2009

Прямо сейчас, когда я дважды нажимаю UIScrollView, я запускаю этот код (взят из собственного примера кода Apple):

#define ZOOM_STEP 1.5
float newScale = [imageScrollView zoomScale] * ZOOM_STEP;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];
[imageScrollView zoomToRect:zoomRect animated:YES];

Однако я установил максимальное увеличение до 3, но я хотел бы выяснить, как сделать масштабирование двойным касанием до 1px = 1px, то есть UIScrollView увеличивает действительный размер UIImage внутри него. Но я не уверен, как рассчитать размер изображения, чтобы использовать его для масштабирования?

1 Ответ

1 голос
/ 02 октября 2009

Я нашел пример кода, из которого вы извлекали код. Это был проект TapToZoom в ScrollViewSuite, доступный по http://developer.apple.com/iphone.

Я изменил строку, которая вычисляет newScale, чтобы она была отношением между размером кадра Scroll View и размером Image View. Это дает эффект увеличения масштаба изображения до тех пор, пока изображение не будет показано с разрешением 1: 1.

Примечание: я также должен был убедиться, что UIImageView с именем imageView является переменной класса. В исходном примере кода он был объявлен локально в viewDidLoad: метод.

Предостережение заключается в том, что представление прокрутки и изображение имеют одинаковое отношение x / y. Я только что сделал математику по ширине.

- (void)tapDetectingImageView:(TapDetectingImageView *)view gotDoubleTapAtPoint:(CGPoint)tapPoint {
    // double tap zooms in on them image to a 1:1 resolution (based on width)
    float newScale =  imageView.image.size.width / imageScrollView.frame.size.width;
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];
    [imageScrollView zoomToRect:zoomRect animated:YES];
}
...