#ios #swift #xcode #uiscrollview #uiimageview
#iOS #swift #xcode #uiscrollview #uiimageview
Вопрос:
Мне удалось увеличить масштаб до a UIImageView
в a UIScrollView
, но изображение уходит в сторону или снизу, так что я не могу прокручивать все изображение в увеличенном режиме.
Пробовал поиграть с constraints
, похоже, никакого эффекта.
import Foundation
import UIKit
class PhotoZoomController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var scroller: UIScrollView!
@IBOutlet weak var back: UIButton!
weak var image: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
assert(imageView != nil)
if let iv = imageView {
iv.image = image
}
scroller.delegate = self
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
@IBAction func exit(_ sender: Any) {
dismiss(animated: true)
}
}
Ответ №1:
Не могли бы вы попробовать добавить ZoomScale
.
scrollView.minimumZoomScale = 1.0 // Minimum zoom scale
scrollView.maximumZoomScale = 10.0 // Maximum zoom scale
scrollView.zoomScale = 1.0 //Default zoom scale
Надеюсь, этот код работает для вас.
Комментарии:
1. это не исправляет проблему.
2. Когда я увеличиваю масштаб, нижняя часть изображения не может быть прокручена в поле зрения.
Ответ №2:
Я понял это, сначала привязал imageview в storyboard к 4 краям scrollview с интервалом 0, затем добавил ограничение для горизонтального / вертикального среднего позиционирования.
После этого включите:
self.imageView?.clipsToBounds = true
scroller.contentSize = imageView?.image?.size ?? scroller.contentSize
вот весь файл:
//
// PhotoZoomController.swift
//
//
// Created by John Karasev on 4/04/19.
// Copyright © 2019 John Karasev. All rights reserved.
//
import Foundation
import UIKit
class PhotoZoomController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var scroller: UIScrollView!
@IBOutlet weak var back: UIButton!
@IBOutlet weak var imageView: UIImageView!
weak var image: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
assert(imageView != nil)
if let iv = imageView {
iv.image = image
}
scroller.delegate = self
scroller.zoomScale = 1.0
scroller.addSubview(imageView!)
self.imageView?.clipsToBounds = true
scroller.contentSize = imageView?.image?.size ?? scroller.contentSize
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
@IBAction func exit(_ sender: Any) {
dismiss(animated: true)
}
}