더블 헤드와 병음으로 그림을 확대하고 축소하다

10593 단어 Xcode6SwiftiOS

애플리케이션 컨텐츠

  • 8배 ~ 1배 확대/축소
  • 더블 클릭 시 3배 확대, 상한 초과 시 1배 회복.
  • 이 견본의 이미지는 매우 재미있다.
    나는 Chapter 6-4의 샘플 앱을 Swift로 만들었는데 이 책의 이름은'상세한 생각-C 아이폰 앱 개발 입문 노트'다.이것은 거기에서 사용하는 그림입니다.

    코드


    ViewController.swift
    class ViewController: UIViewController , UIScrollViewDelegate{
    
        @IBOutlet var myImageView: UIImageView!
        @IBOutlet var myScrollView: UIScrollView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // スクロールビューの設定
            self.myScrollView.delegate = self
            self.myScrollView.minimumZoomScale = 1
            self.myScrollView.maximumZoomScale = 8
            self.myScrollView.scrollEnabled = true
            self.myScrollView.showsHorizontalScrollIndicator = true
            self.myScrollView.showsVerticalScrollIndicator = true
    
            var doubleTapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self
                , action:"doubleTap:")
            doubleTapGesture.numberOfTapsRequired = 2
            self.myImageView.userInteractionEnabled = true
            self.myImageView.addGestureRecognizer(doubleTapGesture)
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
        // ピンチイン・ピンチアウト
        func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
            print("pinch")
            return self.myImageView
        }
        // ダブルタップ
        func doubleTap(gesture: UITapGestureRecognizer) -> Void {
    
            print(self.myScrollView.zoomScale)
            if ( self.myScrollView.zoomScale < self.myScrollView.maximumZoomScale ) {
    
                var newScale:CGFloat = self.myScrollView.zoomScale * 3
                var zoomRect:CGRect = self.zoomRectForScale(newScale, center: gesture.locationInView(gesture.view))
                self.myScrollView.zoomToRect(zoomRect, animated: true)
    
            } else {
                self.myScrollView.setZoomScale(1.0, animated: true)
            }
        }
        // 領域
        func zoomRectForScale(scale:CGFloat, center: CGPoint) -> CGRect{
            var zoomRect: CGRect = CGRect()
            zoomRect.size.height = self.myScrollView.frame.size.height / scale
            zoomRect.size.width = self.myScrollView.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
        }
    }
    

    원본 파일


    메모

  • ios 시뮬레이터에서 바늘귀를 내밀면서 옵션 키를 누르면서 마우스를 드래그합니다.
  • 더블 헤드 및 클립 이외의 Swift 샘플 포함
    https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/uiswipegesturerecognizerdesuwaipuwo-ren-shi
  • 좋은 웹페이지 즐겨찾기