首页 > 解决方案 > 首次缩放时捏放大不起作用 - ios

问题描述

我将 UIImageView 作为 UIScrollView 的子视图。

let newImageView = UIImageView(image: imageView.image)

newImageView.contentMode = .scaleAspectFit
newImageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissFullscreenImage))
newImageView.addGestureRecognizer(tap)

scrollPinch = UIScrollView()
scrollPinch.frame = UIScreen.main.bounds
scrollPinch.isUserInteractionEnabled = true
scrollPinch.minimumZoomScale = 1.0
scrollPinch.maximumZoomScale = 6.0
scrollPinch.delegate = self
scrollPinch.clipsToBounds = true

newImageView.frame = scrollPinch.bounds

self.view.addSubview(self.scrollPinch)
self.scrollPinch.addSubview(newImageView)

像这样。(* scrollPinch 在这个 ViewController 类的方法之外被声明为 var scrollPinch: UIScrollView!) 然后,在委托方法中,

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    if (scrollView == scrollPinch){
        if (scrollView.subviews[0].isKind(of: UIImageView.self)){

            return scrollView.subviews[0]
        }
    }
    return nil
}

现在,我首先尝试放大,imageView 向右移动而不是放大。但是,在我放开 imageView 并尝试再次放大后,它工作得很好。

任何想法如何解决这个问题?

标签: iosswiftuiscrollviewzoomingpinch

解决方案


原来我应该做的

self.scrollPinch.addSubview(newImageView)
self.view.addSubview(self.scrollPinch)

代替

self.view.addSubview(self.scrollPinch)
self.scrollPinch.addSubview(newImageView)

在我交换这两行之后,一切都解决了。


推荐阅读