Я пытаюсь увеличить UIImageView
и UIView
, которые находятся внутри UIScrollView
, но это не работает.
У меня UIImage and CALayer
, у обоих есть одинаковый размер (2048×2155
). Эти компоненты завернуты в UIImageView (представление изображения) и UIView (холст) и отображаются внутри UIScrollView.
Представление изображения и холст имеют одинаковые content scale factor
, что равно 2.0 (UIScreen.main.scale), но холст неправильного размера (см. рисунок ниже).
введите описание изображения здесь
Подслои CALayer были созданы с использованием CAShapeLayer and UIBezierPath
.
UIScrollViewDelegate
выглядит следующим образом:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
canvas
}
func scrollViewDidZoom(_ scrollView: UIScrollView) {
self.scrollView.centerContentView()
}
Центральное представление содержимого выглядит следующим образом (метод внутри custom UIScrollView):
func centerContentView() {
let boundsSize = bounds.size
var centerFrame = canvas.frame
if centerFrame.size.width < boundsSize.width {
centerFrame.origin.x = (boundsSize.width - centerFrame.size.width) / 2.0
} else {
centerFrame.origin.x = 0
}
if centerFrame.size.height < boundsSize.height {
centerFrame.origin.y = (boundsSize.height - centerFrame.size.height) / 2.0
} else {
centerFrame.origin.y = 0
}
imageView.frame = centerFrame
canvas.frame = centerFrame
}
Все мои усилия потерпели неудачу. Я пытался преобразовать CALayer с помощью холста, но безуспешно. Буду благодарен за любые предложения или помощь. Спасибо.