Использование кнопок UIB для перемещения влево, вправо, вверх и вниз в увеличенном виде в UIImageView - PullRequest
0 голосов
/ 10 февраля 2019

Я искал много ресурсов, но пока безрезультатно.

Я могу успешно увеличивать / уменьшать и перемещать влево, вправо, вверх и вниз, проводя в UIImageView под ScrollView.

Как добиться того же с помощью кнопок?Я мог бы увеличить и уменьшить масштаб с помощью этого кода:

@IBAction func zoomIn(_ sender: UIBarButtonItem) {
    imageScrollView.maximumZoomScale = 6.0
    if imageScrollView.zoomScale < imageScrollView.maximumZoomScale {
        imageScrollView.zoomScale = imageScrollView.zoomScale + 0.1
    }
}

@IBAction func zoomOut(_ sender: UIBarButtonItem) {
    imageScrollView.minimumZoomScale = 1
    if imageScrollView.zoomScale > imageScrollView.minimumZoomScale {
        imageScrollView.zoomScale = imageScrollView.zoomScale - 0.1
    }
}

И вот код, который я использую:

@IBOutlet weak var imageScrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
    super.viewDidLoad()

    imageScrollView.contentSize = self.imageView.frame.size
    imageScrollView.delegate = self
  }


override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    updateMinZoomScaleForSize(view.bounds.size)
}

// MARK: - Calculation of zoom scale for imageScrollView
fileprivate func updateMinZoomScaleForSize(_ size: CGSize) {
    let widthScale = size.width / imageView.bounds.width
    let heightScale = size.height / imageView.bounds.height
    let minScale = min(widthScale, heightScale)

    imageScrollView.minimumZoomScale = minScale
    imageScrollView.zoomScale = minScale
}

Мне нужно добавить еще 4 кнопки вФорма стрелок для перемещения влево, вправо, вверх и вниз.Цель всего этого состоит в том, что я хочу одновременно рисовать и увеличивать UIImageView, и это вызывает конфликты.

1 Ответ

0 голосов
/ 11 февраля 2019

Добавьте четыре кнопки и сопоставьте каждую из них следующим действиям.Если вы не используете autolayout, это будет работать:

@IBAction func moveLeft(_ sender: UIBarButtonItem) {
  imageScrollView.frame.origin.x -= 10.0
}

@IBAction func moveRight(_ sender: UIBarButtonItem) {
  imageScrollView.frame.origin.x += 10.0
}

@IBAction func moveUp(_ sender: UIBarButtonItem) {
  imageScrollView.frame.origin.y += 10.0
}

@IBAction func moveDown(_ sender: UIBarButtonItem) {
  imageScrollView.frame.origin.y -= 10.0
}
...