У меня есть UIScrollView
, содержащий один UIImageView
. Я пытаюсь установить минимальную фабрику прокрутки, так что, когда представление полностью будет уменьшено, все изображение можно увидеть и растянуть по всему экрану.Как правильно рассчитать минимальный коэффициент масштабирования для UIScrollView?
В настоящее время мой код, как представляется, устанавливает минимальный минимум. Вся картина видна, но на правой стороне изображения есть много лишнего места. Когда появляется представление, изображение может быть полностью выведено из поля зрения. Как только выполняется другое масштабирование, большая часть дополнительного пространства уходит, но изображение все еще может быть увеличено слишком мало.
Вот код:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
imageView.image = image!
imageView.frame.size = image!.size
scrollView.contentSize = imageView.frame.size
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight)
scrollView.minimumZoomScale = minScale
scrollView.maximumZoomScale = 3.0
scrollView.zoomToRect(imageView.frame, animated: false)
}
Edit: кажется, размеры, меняется до и после увеличения.
Перед увеличением:
Scroll view frame: (0.0, 0.0, 600.0, 600.0)
Scroll view content size: (1500.0, 1001.0)
Image view frame: (0.0, 0.0, 1500.0, 1001.0)
После увеличения:
Scroll view frame: (0.0, 0.0, 600.0, 600.0)
Scroll view content size: (600.0, 400.4)
Image view frame: (0.0, 0.0, 600.0, 400.4)
Ваш код выглядит довольно прочным. Каковы значения для scrollView.frame и scrollView.contentSize? –
'scrollView.frame = (0.0, 0.0, 600.0, 600.0)' и 'scrollView.contentSize = (600.0, 400.4)' – Max
Вместо вычисления на основе contentSize попробуйте использовать imageView.frame.size. Кроме того, если вы намереваетесь увеличить масштаб до 0,67, вы все еще видите белый экран? –