使用 UIButtons 在 UIImageView 中放大向左、向右、向上和向下移动



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

我能够通过在 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,这会导致冲突。

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

最新更新