【问题标题】:Unable to zoom UIImageView in UIScrollView无法在 UIScrollView 中缩放 UIImageView
【发布时间】:2019-05-23 09:15:24
【问题描述】:

我想将UIImageView 放大到ScrollView,但我不知道该怎么做。

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

    var scrollView: UIScrollView = UIScrollView()
    var viewInScrollView: UIView = UIView()
    var selectedImageView: UIImageView = UIImageView()


    override func viewDidLoad() {
        super.viewDidLoad()

        scrollView.delegate = self

        view.addSubview(scrollView)
        scrollView.addSubview(viewInScrollView)
        viewInScrollView.addSubview(selectedImageView)
        selectedImageView.image = UIImage(named: "michael")

        scrollView.translatesAutoresizingMaskIntoConstraints = false
        viewInScrollView.translatesAutoresizingMaskIntoConstraints = false
        selectedImageView.translatesAutoresizingMaskIntoConstraints = false

        scrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
        viewInScrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)
        viewInScrollView.widthAnchor.constraint(equalToConstant: view.frame.width).isActive = true
        viewInScrollView.heightAnchor.constraint(equalToConstant: view.frame.height).isActive = true

        selectedImageView.anchor(top: viewInScrollView.topAnchor, leading: viewInScrollView.leadingAnchor, bottom: viewInScrollView.bottomAnchor, trailing: viewInScrollView.trailingAnchor)

    }

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return selectedImageView
    }

}

【问题讨论】:

  • 你的滚动视图的 contentSize 是多少?你需要增加 contentSize 来缩放 imageview。

标签: ios swift uiscrollview zooming


【解决方案1】:

我建议从a tutorial example 开始进行UIScrollView 缩放。先一步一步做吧。

还有....

乍一看,您对viewInScrollView 的约束并不准确。您项目中的视图层次结构是

view -> scrollView -> viewInScrollView -> selectedImageView

viewInScrollView 的约束将决定UIScrollViewcontentSize。放大/缩小时,contentSize 将发生变化。所以,它的(上、下、左、右)锚点应该与UIScrollView 对齐,而不是view。所以我认为下面的约束是错误的。

// Not right
viewInScrollView.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: view.bottomAnchor, trailing: view.trailingAnchor)

// It should aligned to `UIScrollView`'s top, bottom, left and right anchors.

【讨论】:

    【解决方案2】:

    您必须将maximumZoomScaleminimumZoomScale 添加到您的scrollView,如下所示。

    scrollView.minimumZoomScale = 0.25
    scrollView.maximumZoomScale = 5.0

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 2012-08-16
      • 2012-11-24
      • 2014-12-04
      • 2017-01-06
      • 2017-09-23
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多