快速捏合缩放

Posted

技术标签:

【中文标题】快速捏合缩放【英文标题】:Swift pinch to zoom 【发布时间】:2019-07-21 19:27:53 【问题描述】:

我正在尝试以编程方式快速添加图像和滚动视图,然后让它们被捏合以进行缩放。

我已按照 UIImageView pinch zoom swift 的说明进行操作,但仍然无法通过捏合进行缩放,我不确定我错过了什么

class mapViewController: UIViewController, UIScrollViewDelegate, IALocationManagerDelegate 

    var imageViewBackground: UIImageView!

    override func viewDidLoad() 


        super.viewDidLoad()

        let width = UIScreen.main.bounds.size.width
        let height = UIScreen.main.bounds.size.height

        let imageViewBackground = UIImageView(frame: CGRect(x:0, y:0, width:width-70, height:height-60))
        var image: UIImage?
        let urlString = "https://firebasestorage.googleapis.com/v0/b/coxur-59760.appspot.com/o/Maps%2FCapture.png?alt=media&token=741b1425-cb01-453b-8c40-47f6e5fd528d"

        let url = NSURL(string: urlString)! as URL
        if let imageData: NSData = NSData(contentsOf: url) 
            image = UIImage(data: imageData as Data)
        
        imageViewBackground.image = image

        // you can change the content mode:
        imageViewBackground.contentMode = UIView.ContentMode.scaleAspectFill

        var scrollView: UIScrollView!
        scrollView = UIScrollView(frame: CGRect(x: 0, y: 120, width: width, height: height))
        scrollView.contentSize = CGSize(width: width, height: 2000)
        scrollView.delegate = self
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 6.0

        scrollView.addSubview(imageViewBackground)
        self.view.addSubview(scrollView)
        //self.view.sendSubviewToBack(imageViewBackground)
    
    func viewForZooming(in scrollView: UIScrollView) -> UIView? 

        return imageViewBackground
    



我在这里做错了什么?

【问题讨论】:

这与您提出的实际问题无关,但永远不要永远不要使用远程 URL 调用 NSData(contentsOf: url)。通过适当的方式异步下载图片数据。 这是为什么呢?我正在使用远程 url,因为我希望能够在发布应用程序后对其进行更新 我没有说不要使用远程 URL。我说不要通过说NSData(contentsOf:)来获取它。 【参考方案1】:

问题出在这一行:

let imageViewBackground = UIImageView(frame: CGRect(x:0, y:0, width:width-70, height:height-60))

删除let。问题解决了。

【讨论】:

【参考方案2】:

抱歉,没有评论的声誉,但可能是您正在初始化 viewDidLoad 内部的滚动视图,而不是使其成为类变量?

【讨论】:

以上是关于快速捏合缩放的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 并取消缩放捏合手势

如何为 Android 测试生成缩放/捏合手势

Android:自定义视图缩放/捏合

可以使用带有覆盖 div 的 iscroll 捏合/缩放吗?

Phonegap 捏合和缩放以缩放画布

在 UIWebView 上启用缩放/捏合