swift - 如何在代码创建的 ScrollView 上捏放大

标签 swift zooming pinchzoom

我的代码创建一个 ScrollView 和 ImageView ,显示来自先前 View Controller 的图片数组。但是,我正在尝试实现代码来实现它,以便用户可以放大图片。但无论我做什么,它都不起作用。关于我做错了什么或者在哪里实现放大代码有什么建议吗?谢谢!

import UIKit

class DestinationVC: UIViewController {
    @IBOutlet weak var myScrollView: UIScrollView!

    var mySelectedProtocol:Protocol?
    var pageControl:UIPageControl?
    var currentPageIndex:Int=0
    fileprivate var count:Int=0

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        if mySelectedProtocol == nil { self.navigationController?.popViewController(animated: true) }
        if mySelectedProtocol!.imagesName!.count == 0 { self.navigationController?.popViewController(animated: true) }
        /// We have Data
        print("Img Array with Name ==> \(mySelectedProtocol?.imagesName ?? [])")
        DispatchQueue.main.async {
            self.addPageView()
        }
    }
    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        myScrollView.delegate = self
        myScrollView.minimumZoomScale = 1.0
        myScrollView.maximumZoomScale = 5.0
        return myScrollView
            }

    private func addPageView() {
        myScrollView.backgroundColor=UIColor.black
        myScrollView.isUserInteractionEnabled=true
        myScrollView.showsHorizontalScrollIndicator=true
        myScrollView.isPagingEnabled=true
        myScrollView.delegate=self
        myScrollView.bounces=false

        self.count=mySelectedProtocol!.imagesName!.count
        for i in 0..<self.count {
            ///Get Origin
            let xOrigin : CGFloat = CGFloat(i) * myScrollView.frame.size.width
            ///Create a imageView
            let imageView = UIImageView()
            imageView.frame = CGRect(x: xOrigin, y: 0, width: myScrollView.frame.size.width, height: myScrollView.frame.size.height)
            imageView.contentMode = .scaleAspectFit
            imageView.image=UIImage(named: mySelectedProtocol!.imagesName![i])
            myScrollView.addSubview(imageView)

        }
        setUpPageControl()
        ///Set Content Size to Show
        myScrollView.contentSize = CGSize(width: myScrollView.frame.size.width * CGFloat(self.count), height: myScrollView.frame.size.height)
    }

    private func setUpPageControl() {
        if pageControl == nil { pageControl=UIPageControl() }
        pageControl!.numberOfPages = self.count
        pageControl!.currentPageIndicatorTintColor = UIColor.red
        pageControl!.pageIndicatorTintColor = UIColor.white
        pageControl!.frame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height*0.2)
        pageControl!.currentPage=currentPageIndex
        self.view.addSubview(pageControl!)
        self.view.bringSubview(toFront: pageControl!)
    }
}

extension DestinationVC: UIScrollViewDelegate {
    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        let scrollW : CGFloat = scrollView.frame.size.width
        currentPageIndex = Int(scrollView.contentOffset.x / scrollW)
        self.pageControl!.currentPage=currentPageIndex
    }

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let scrollW : CGFloat = scrollView.frame.size.width
        currentPageIndex = Int(scrollView.contentOffset.x / scrollW)
        self.pageControl!.currentPage=currentPageIndex
    }
}

最佳答案

您将 minimumScale 设置为 1.0 - 这只是正常比例的 1 倍。如果你想让它缩小得更近,你可以尝试设置最小缩放,如下所示:

let scaleWidth = scrollView.frame.size.width / scrollView.contentSize.width
let scaleHeight = scrollView.frame.size.height / scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight)

scrollView.minimumZoomScale = minScale
scrollView.maximumZoomScale = 1.0
scrollView.zoomScale = minScale

并将 maximumZoomScale 设置为 1.0 - 内容的大小。

关于swift - 如何在代码创建的 ScrollView 上捏放大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56502529/

相关文章:

javascript - 设置缩放级别在 Google map 上不起作用

macos - 适用于 macOS 的 Firefox 开发人员版中是否提供捏合缩放(像我们在图像上那样缩放)?如果是,如何启用它?

Swift:热平移和放大/缩小 imageView 中的图像

ios - Swift xpath 搜索返回字符串

ios - 更改日期选择器的模式

ios - 无法将 CLLocationDegrees 的值转换为预期参数 shopProperties

ios - swift 从 UICollectionViewDataSource 继承时的通用类

ios - UIPageViewController-PDF 缩放不工作 xcode?

C# 调整生成图像的大小;位图、参数异常

java - Android - 调整可缩放 ImageView 顶部的 ImageView 位置