Прокрутите и увеличьте масштаб, чтобы указать c CGRect UIImageView - PullRequest
1 голос
/ 18 июня 2020

У меня внутри UIScrollView и UIImageView. Размер UIScrollView равен 350x350, а изображение внутри UIImageView - 350x350.

UIScrollView имеет zoomScale из 4 .

Я хочу показать только определенную c точку прямоугольника изображения:

CGRect(x: 100, y: 100, width: 100, height: 100)

Для лучшего понимания, только белый прямоугольник внутри изображений:

x: 100, y: 100, ширина: 100, высота: 100

enter image description here

x: 150, y: 150, ширина: 100, высота: 100

enter image description here

То, что я делал до сих пор, не помогло:

    self.image.image = UIImage(named: "horse_marked_100x100")
    self.imageScroller.maximumZoomScale = 10
    self.imageScroller.minimumZoomScale = 1
    self.imageScroller.clipsToBounds = true
    self.imageScroller.delegate = self
    self.imageScroller.isScrollEnabled = false
    self.imageScroller.scrollRectToVisible(CGRect(x: 100, y: 100, width: 100, height: 100), animated: false)
    self.imageScroller.zoomScale = 4

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете использовать:

    scrollView.zoom(to: CGRect(x: 100, y: 100, width: 100, height: 100), animated: true)

Вам следует позаботиться только о том, чтобы желаемый размер был покрыт maximumZoomScale прокрутки. Например, в этом примере вы не сможете увеличить прямоугольник меньше 35 x 35, потому что у вас maximumZoomScale = 10. В вашем примере у вас нет никаких проблем с этим.

Примечание: CGRect должен быть в координатном пространстве представления, возвращаемого viewForZooming(in:). Это метод UIScrollViewDelegate, который необходимо реализовать, чтобы включить масштабирование. Здесь вам нужно просто вернуть UIImageView внутри прокрутки.

UPDATE:

Просто чтобы уточнить, что вы пробовали до сих пор и почему это не так. работа: scrollView.scrollRectToVisible(_:, animated:) будет прокручиваться в позиции, где переданный CGRect виден, но без увеличения масштаба прокрутки. В этом примере этот CGRect уже полностью отображается в режиме прокрутки, поэтому ему не нужно никуда прокручивать, поэтому вы не видите никакого видимого эффекта.

...