Как увеличить масштаб кода, созданного scrollview - PullRequest
0 голосов
/ 08 июня 2019

Мой код создает представление прокрутки и изображения, которое отображает массив изображений из предыдущего контроллера просмотра. Тем не менее, я пытаюсь реализовать код, чтобы пользователь мог увеличить изображение. Но что бы я ни делал, это не работает. Любые предложения о том, что я делаю неправильно, или где реализовать увеличение в коде? Спасибо!

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
    }
}

1 Ответ

0 голосов
/ 08 июня 2019

Вы устанавливаете 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 - размер содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...