2017-02-01 5 views
2

My ScrollViewがスムーズに動作しています。資産ライブラリに画像があります。名前は1から始まり39になります。画像を拡大したい。私は別の方法を試しましたが、成功することはできませんでした。UIScrollViewでズームイメージを実装する方法は?

これは私のコードです:

import UIKit 

class fotolarView: UIViewController, UIScrollViewDelegate { 

    @IBOutlet weak var mainScroolView: UIScrollView! 

    var imageArray = [UIImage]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     mainScroolView.delegate = self 
     mainScroolView.frame = view.frame 

     imageArray = [#imageLiteral(resourceName: "1"), #imageLiteral(resourceName: "2"), #imageLiteral(resourceName: "3"), #imageLiteral(resourceName: "4"), #imageLiteral(resourceName: "5"), #imageLiteral(resourceName: "6"), #imageLiteral(resourceName: "7"), #imageLiteral(resourceName: "10"), #imageLiteral(resourceName: "8"), #imageLiteral(resourceName: "9"), #imageLiteral(resourceName: "11"), #imageLiteral(resourceName: "12"), #imageLiteral(resourceName: "20"), #imageLiteral(resourceName: "13"), #imageLiteral(resourceName: "21"), #imageLiteral(resourceName: "22"), #imageLiteral(resourceName: "15"), #imageLiteral(resourceName: "23"), #imageLiteral(resourceName: "16"), #imageLiteral(resourceName: "31"), #imageLiteral(resourceName: "24"), #imageLiteral(resourceName: "17"), #imageLiteral(resourceName: "25") , #imageLiteral(resourceName: "32"), #imageLiteral(resourceName: "33"), #imageLiteral(resourceName: "19"), #imageLiteral(resourceName: "26"), #imageLiteral(resourceName: "34"), #imageLiteral(resourceName: "27"), #imageLiteral(resourceName: "35"), #imageLiteral(resourceName: "28"), #imageLiteral(resourceName: "29"), #imageLiteral(resourceName: "36"), #imageLiteral(resourceName: "37"), #imageLiteral(resourceName: "38"), #imageLiteral(resourceName: "39")] 

     for i in 0..<imageArray.count { 
      let imageView = UIImageView() 
      imageView.image = imageArray[i] 
      imageView.isUserInteractionEnabled = true 
      imageView.contentMode = .scaleAspectFit 
      let xPozition = self.view.frame.width * CGFloat(i) 
      imageView.frame = CGRect(x: xPozition, y: 0, width: self.mainScroolView.frame.width, height: self.mainScroolView.frame.height) 
      mainScroolView.contentSize.width = mainScroolView.frame.width * CGFloat(i + 1) 
      mainScroolView.addSubview(imageView) 
     } 
    } 
} 

答えて

7
var scrollView: UIScrollView! 
var imageView: UIImageView! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    imageView = UIImageView(image: UIImage(named: "image.png")) 
    scrollView = UIScrollView(frame: view.bounds) 
    scrollView.backgroundColor = UIColor.black 
    scrollView.contentSize = imageView.bounds.size 
    scrollView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    scrollView.contentOffset = CGPoint(x: 1000, y: 450) 

    scrollView.addSubview(imageView) 
    view.addSubview(scrollView) 

    scrollView.delegate = self 

    setZoomScale() 

    setupGestureRecognizer() 
} 

func viewForZooming(in scrollView: UIScrollView) -> UIView? 
{ 
    return imageView 
} 

override func viewWillLayoutSubviews() 
{ 
    setZoomScale() 
} 

func scrollViewDidZoom(_ scrollView: UIScrollView) 
{ 
    let imageViewSize = imageView.frame.size 
    let scrollViewSize = scrollView.bounds.size 

    let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0 
    let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0 

    scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) 
} 

func setZoomScale() 
{ 
    let imageViewSize = imageView.bounds.size 
    let scrollViewSize = scrollView.bounds.size 
    let widthScale = scrollViewSize.width/imageViewSize.width 
    let heightScale = scrollViewSize.height/imageViewSize.height 

    scrollView.minimumZoomScale = min(widthScale, heightScale) 
    scrollView.zoomScale = 1.0 
} 

func setupGestureRecognizer() 
{ 
    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(ScrollViewController.handleDoubleTap(_:))) 
    doubleTap.numberOfTapsRequired = 2 
    scrollView.addGestureRecognizer(doubleTap) 
} 

func handleDoubleTap(_ recognizer: UITapGestureRecognizer) 
{ 
    if (scrollView.zoomScale > scrollView.minimumZoomScale) 
    { 
     scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true) 
    } else { 
     scrollView.setZoomScale(scrollView.maximumZoomScale, animated: true) 
    } 
} 
+0

回答ありがとうございます。しかし、私は自分のイメージを使う方法を理解していません。 assetsフォルダにはたくさんの画像があります。 –

+0

あなたのコードをテストしましたが、動作しません。 –

+0

https://www.youtube.com/watch?v=LaWnv5sRpho –

0

ちょうどより多くの品質のために上記のコードでは以下の機能を交換してください。

override func viewWillLayoutSubviews() 
{ 
    setZoomScale() 
    scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true) 
} 


func setZoomScale() 
{ 
    let imageViewSize = imageView.bounds.size 
    let scrollViewSize = scrollView.bounds.size 
    let widthScale = scrollViewSize.width/imageViewSize.width 
    let heightScale = scrollViewSize.height/imageViewSize.height 

    scrollView.minimumZoomScale = min(widthScale, heightScale) 
    scrollView.maximumZoomScale = 6.0 
} 
関連する問題