1. ホーム
  2. swift

[解決済み] UIImageView ピンチズーム swift

2023-07-16 17:50:30

質問

私は誰かが私を助けることができることを望んでいた。私は、ユーザーがUIImageView(最大および最小レベルが許可されている)でピンチズームすることを許可しようとしています。しかし、何らかの理由で、それは正しく動作しません。画像は少しズームした後、ちょうど戻ってバウンスされます。ありがとうございます。

以下は、ズーム機能です。

func zoom(sender:UIPinchGestureRecognizer) {


    if sender.state == .Ended || sender.state == .Changed {

        let currentScale = self.view.frame.size.width / self.view.bounds.size.width
        var newScale = currentScale*sender.scale

        if newScale < 1 {
            newScale = 1
        }
        if newScale > 9 {
            newScale = 9
        }

        let transform = CGAffineTransformMakeScale(newScale, newScale)

        self.imageView?.transform = transform
        sender.scale = 1

    }

}

どのように解決するのですか?

UIScrollViewにimageViewを追加することにしました。これによって、ユーザーはズームとパンオーバーをすることができます。以下は、私が使用したコードです。

最大/最小ズームを設定するために、私は.NET Frameworkを使用しました。

    scrollImg.minimumZoomScale = 1.0
    scrollImg.maximumZoomScale = 10.0

以下は残りのコードです。

    var vWidth = self.view.frame.width
    var vHeight = self.view.frame.height

    var scrollImg: UIScrollView = UIScrollView()
    scrollImg.delegate = self
    scrollImg.frame = CGRectMake(0, 0, vWidth!, vHeight!)
    scrollImg.backgroundColor = UIColor(red: 90, green: 90, blue: 90, alpha: 0.90)
    scrollImg.alwaysBounceVertical = false
    scrollImg.alwaysBounceHorizontal = false
    scrollImg.showsVerticalScrollIndicator = true
    scrollImg.flashScrollIndicators()

    scrollImg.minimumZoomScale = 1.0
    scrollImg.maximumZoomScale = 10.0

    defaultView!.addSubview(scrollImg)

    imageView!.layer.cornerRadius = 11.0
    imageView!.clipsToBounds = false
    scrollImg.addSubview(imageView!)

さらに、こんなものも追加していました。

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
    return self.imageView
}

Swift 3 &以上の関数プロトタイプ

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return self.mainImage
}