使用UIButton在放大的UIImageView中向左,向右,向上和向下移动

时间:2019-02-10 17:19:34

标签: swift uiscrollview uiimageview core-graphics

我搜索了许多资源,但到目前为止没有结果。

通过滑动ScrollView下的UIImageView,我能够成功地放大/缩小以及向左,向右,向上和向下移动。

如何通过使用按钮来实现相同目的?我可以使用以下代码进行放大和缩小:

@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 :(得分:0)

添加四个按钮,并将每个按钮映射到以下操作。如果您不使用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
}