【问题标题】:Zooming in UIScrollview Programmatically Does Not Work以编程方式放大 UIScrollview 不起作用
【发布时间】:2020-08-19 12:34:43
【问题描述】:

我正在使用双击放大滚动视图内的图像视图。

当从按钮点击动作中调用下面的方法时,它可以正常工作(imageView 放大/缩小)。

但是我需要以编程方式调用该方法来放大,当我这样做时,什么也没有发生:imageView 没有放大。

我错过了什么?

下面是我使用的@objc func doubleTapped() 方法的精确副本,其中点击位置替换为任意CGPoint

func doubleTappedCustom() {

        var scale: CGFloat = 2

        let ratioW = imageView.frame.width / imageView.image!.size.width
        let ratioH = imageView.frame.height / imageView.image!.size.height

        let ratio = ratioW < ratioH ? ratioW:ratioH

        let newWidth = imageView.image!.size.width * ratio
        let newHeight = imageView.image!.size.height * ratio


        if (imageView.image.size.width < imageView.size.height){
            if scale > imageView.frame.width / newWidth {
                scale = imageView.frame.width / newWidth
            }
        }


        let location = CGPoint(x: imageView.frame.width/2, y: imageView.frame.height/2)

        if scrollView.zoomScale == 1 {
            // here tap location is repalced with 'location' cgpoint
            scrollView.zoom(to: zoomRectForScale(scale, center: location), animated: true)
        } else {
            scrollView.setZoomScale(1, animated: true)
        }



    }

【问题讨论】:

    标签: ios swift uiscrollview


    【解决方案1】:

    问题已通过将缩放代码移至viewDidAppear得到解决

    【讨论】:

      【解决方案2】:
      func viewForZooming(in scrollView: UIScrollView) -> UIView?
      {
          return image
      }
      
      override func viewDidLoad() {
          super.viewDidLoad()
      
          scrollView.delegate = self
          scrollView.minimumZoomScale = 1
          scrollView.maximumZoomScale = 20
      
      }
      

      【讨论】:

      • 我已经有 viewForZooming 和 scrollview 委托,最小,最大缩放比例设置。同样,从按钮点击动作调用时,双击放大/缩小效果很好。我上面的问题中描述的双击方法在以编程方式调用时不起作用(没有按钮点击操作)
      • 显示 UITapGestureRecognizer 代码,您同时使用了单击和双击,并且它们都设置为正确的 numberOfTapsRequired = ?
      • 对不起,我之前可能不太清楚。当我将问题中的代码与 UITapGestureRecognizer 一起使用时,它可以正常工作。这不是我要问的。我面临的问题是我需要调用上面的代码而不是双击手势,而是从另一种方法。基本上,一旦我的 imageView 和 imageScrollView 被设置和初始化,我就会调用这个放大方法(doubleTappedCustom),如果从按钮点击调用它就可以工作,而从其他地方调用它就不起作用。这就是问题所在。
      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 2014-05-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 2011-05-21
      相关资源
      最近更新 更多