facebook twitter hatena line email

「Ios/swift/画像ビューアー」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
行7: 行7:
 
     @IBOutlet weak var _scrollView: UIScrollView!
 
     @IBOutlet weak var _scrollView: UIScrollView!
 
     @IBOutlet weak var _imageView: UIImageView!
 
     @IBOutlet weak var _imageView: UIImageView!
 +
    private var _zoomScaleWidth:CGFloat = CGFloat()
 
     internal var imgpath: String! = "https://pbs.twimg.com/media/CnHuxaAWAAI0r3y.jpg"
 
     internal var imgpath: String! = "https://pbs.twimg.com/media/CnHuxaAWAAI0r3y.jpg"
 
     override func viewDidLoad() {
 
     override func viewDidLoad() {
 
         super.viewDidLoad()
 
         super.viewDidLoad()
 +
        navigationController?.setNavigationBarHidden(false, animated: false)
 
         if imgpath.containsString("http://") || imgpath.containsString("https://") {
 
         if imgpath.containsString("http://") || imgpath.containsString("https://") {
 
             let imageURL = NSURL(string: imgpath)
 
             let imageURL = NSURL(string: imgpath)
行18: 行20:
 
         // 初期scale
 
         // 初期scale
 
         let myBoundSize: CGSize = UIScreen.mainScreen().bounds.size
 
         let myBoundSize: CGSize = UIScreen.mainScreen().bounds.size
         let zoomScaleWidth:CGFloat = CGFloat(_imageView.bounds.size.width) / CGFloat(myBoundSize.width)
+
         _zoomScaleWidth = CGFloat(_imageView.bounds.size.width) / CGFloat(myBoundSize.width)
        let zoomScaleHeight:CGFloat = CGFloat(_imageView.bounds.size.height) / CGFloat(myBoundSize.height)
+
        var zoomScale:CGFloat = zoomScaleWidth
+
        if zoomScaleWidth < zoomScaleHeight {
+
            zoomScale = zoomScaleHeight
+
        }
+
 
         self._scrollView.delegate = self
 
         self._scrollView.delegate = self
 
         self._scrollView.minimumZoomScale = 0.1
 
         self._scrollView.minimumZoomScale = 0.1
行35: 行32:
 
         self._imageView.userInteractionEnabled = true
 
         self._imageView.userInteractionEnabled = true
 
         self._imageView.addGestureRecognizer(doubleTapGesture)
 
         self._imageView.addGestureRecognizer(doubleTapGesture)
         self._scrollView.setZoomScale(zoomScale, animated: false)
+
         self._scrollView.setZoomScale(_zoomScaleWidth, animated: false)
 
     }
 
     }
 
     override func didReceiveMemoryWarning() {
 
     override func didReceiveMemoryWarning() {
行46: 行43:
 
     // ダブルタップ
 
     // ダブルタップ
 
     func doubleTap(gesture: UITapGestureRecognizer) -> Void {
 
     func doubleTap(gesture: UITapGestureRecognizer) -> Void {
        print(self._scrollView.zoomScale)
 
 
         if ( self._scrollView.zoomScale < self._scrollView.maximumZoomScale ) {
 
         if ( self._scrollView.zoomScale < self._scrollView.maximumZoomScale ) {
             let newScale:CGFloat = self._scrollView.zoomScale * 3
+
             let newScale:CGFloat = self._scrollView.zoomScale * 3.7
 
             let zoomRect:CGRect = self.zoomRectForScale(newScale, center: gesture.locationInView(gesture.view))
 
             let zoomRect:CGRect = self.zoomRectForScale(newScale, center: gesture.locationInView(gesture.view))
 
             self._scrollView.zoomToRect(zoomRect, animated: true)
 
             self._scrollView.zoomToRect(zoomRect, animated: true)
 
         } else {
 
         } else {
             self._scrollView.setZoomScale(1.0, animated: true)
+
             self._scrollView.setZoomScale(_zoomScaleWidth, animated: true)
 
         }
 
         }
 
     }
 
     }
行65: 行61:
 
     }
 
     }
 
  }
 
  }
 +
  
 
参考:http://qiita.com/hanoopy/items/7a2c582cd9758e7a3076
 
参考:http://qiita.com/hanoopy/items/7a2c582cd9758e7a3076

2016年7月30日 (土) 18:28時点における版

画像ビューアーサンプル

画像urlを指定したサンプル

import UIKit
import SDWebImage
class ImageDetailViewController: UIViewController, UIScrollViewDelegate  {
   @IBOutlet weak var _scrollView: UIScrollView!
   @IBOutlet weak var _imageView: UIImageView!
   private var _zoomScaleWidth:CGFloat = CGFloat()
   internal var imgpath: String! = "https://pbs.twimg.com/media/CnHuxaAWAAI0r3y.jpg"
   override func viewDidLoad() {
       super.viewDidLoad()
       navigationController?.setNavigationBarHidden(false, animated: false)
       if imgpath.containsString("http://") || imgpath.containsString("https://") {
           let imageURL = NSURL(string: imgpath)
           _imageView.sd_setImageWithURL(imageURL)
       } else {
           _imageView.image = UIImage(named:imgpath)
       }
       // 初期scale
       let myBoundSize: CGSize = UIScreen.mainScreen().bounds.size
       _zoomScaleWidth = CGFloat(_imageView.bounds.size.width) / CGFloat(myBoundSize.width)
       self._scrollView.delegate = self
       self._scrollView.minimumZoomScale = 0.1
       self._scrollView.maximumZoomScale = 8
       self._scrollView.scrollEnabled = true
       self._scrollView.showsHorizontalScrollIndicator = true
       self._scrollView.showsVerticalScrollIndicator = true
       let doubleTapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self
           , action:#selector(self.doubleTap(_:)))
       doubleTapGesture.numberOfTapsRequired = 2
       self._imageView.userInteractionEnabled = true
       self._imageView.addGestureRecognizer(doubleTapGesture)
       self._scrollView.setZoomScale(_zoomScaleWidth, animated: false)
   }
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }
   // ピンチイン・ピンチアウト
   func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
       return self._imageView
   }
   // ダブルタップ
   func doubleTap(gesture: UITapGestureRecognizer) -> Void {
       if ( self._scrollView.zoomScale < self._scrollView.maximumZoomScale ) {
           let newScale:CGFloat = self._scrollView.zoomScale * 3.7
           let zoomRect:CGRect = self.zoomRectForScale(newScale, center: gesture.locationInView(gesture.view))
           self._scrollView.zoomToRect(zoomRect, animated: true)
       } else {
           self._scrollView.setZoomScale(_zoomScaleWidth, animated: true)
       }
   }
   // 領域
   func zoomRectForScale(scale:CGFloat, center: CGPoint) -> CGRect{
       var zoomRect: CGRect = CGRect()
       zoomRect.size.height = self._scrollView.frame.size.height / scale
       zoomRect.size.width = self._scrollView.frame.size.width / scale
       zoomRect.origin.x = center.x - zoomRect.size.width / 2.0
       zoomRect.origin.y = center.y - zoomRect.size.height / 2.0
       return zoomRect
   }
}


参考:http://qiita.com/hanoopy/items/7a2c582cd9758e7a3076