2017-09-08 12 views
0

ビューコントローラに複数のラベルがあるiOSアプリケーション(swift)を作成しています。私はscrollViewを使用していません。私はピンチジェスチャーでビューコントローラーをズームする必要があります。 私はスクロールビューのソリューションを見つけたが、私のビューコントローラでscrollViewを実装したくないことは知っている。 ご協力いただければ幸いです!ありがとうございました。即時にビューコントローラをズームする

更新:

私はビューコントローラでscrollViewを実装しました。私はscrollviewにビューを追加したビューは、いくつかのラベルが含まれていますが、私は今直面しています問題は、次のとおりです。

  1. ズーム静的滞在していません。それは私が指を離すとすぐに、スクロールビューは自動的にオリジナルにズームされます。

  2. ビューコントローラが元の状態になると、アプリケーションがクラッシュします。ここ

は私のコードです:

@IBOutlet weak var scrollView: UIScrollView! 

@IBOutlet var viewThis: UIView! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    scrollView.delegate = self 

    //let gesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchAction(sender:))) 
    //self.view.addGestureRecognizer(gesture) 

    // Do any additional setup after loading the view. 

    let scrollViewFrame = scrollView.frame 

    let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width 

    let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height 

    let minScale = min(scaleWidth, scaleHeight); 

    scrollView.minimumZoomScale = minScale 

    scrollView.maximumZoomScale = 1.0 

    scrollView.zoomScale = minScale; 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

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

    return viewThis 
} 
+1

私の観点からは、最も簡単な方法はUIScrollViewを使用することです。自動的にズームイン/アウトが可能で、スクロールズームされたコンテンツ –

+0

@IgorKotkovets最新の質問をチェックしてください。 –

+0

最大ズームセット== 1.0を設定しました。それをより大きな値に変更してください。 minZoomScaleは等しくあってはなりません 私のコントローラがロードしたときにmax zoomに変更した後で、計算が –

答えて

2

これを手伝ってくれた@YunCHENに感謝します。彼はコード内で何が起こっているのかを私に教えてくれました。私は、ズームアウト時に、ビューの幅と高さに比べて限界から外れていたため、アプリケーションがクラッシュしていたという問題に直面していました。誰かが同じ問題を将来見つけた場合、私は答えを更新しました。

ステップ1:ビューコントローラにscrollViewを追加します。

ステップ2:scrollViewのビューを追加します。

手順3:このビューのオブジェクトライブラリからすべてのアイテム/オブジェクトを追加します。

ステップ4:スクロールビューをバインドし、ビューコントローラにコードでバインドします。また、UIScrollViewDelegateを追加します。

ステップ5:次のようにします。ここで

は、コードは次のとおりです。私を助けるため@YunCHENへ

@IBOutlet weak var scrollView: UIScrollView! 

@IBOutlet var viewThis: UIView! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    scrollView.delegate = self 

    scrollView.minimumZoomScale = 1.0; 

    scrollView.maximumZoomScale = 3.0 

    scrollView.zoomScale = 1.0 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

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

    return viewThis 
} 

もう一度感謝!

3

のUIViewのtransformプロパティが効果をズームのように、ビューとそのサブビューが小さいか、または大きくすることができます。 UIPinchGestureRecognizerでの作業例:

class ExampleViewController: UIViewController { 

    var previousScale:CGFloat = 1.0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let gesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchAction(sender:))) 
     self.view.addGestureRecognizer(gesture) 
    } 

    func pinchAction(sender:UIPinchGestureRecognizer) { 
     let scale:CGFloat = previousScale * sender.scale 
     self.view.transform = CGAffineTransform(scaleX: scale, y: scale); 

     previousScale = sender.scale 
    } 
} 

そして多分あなたはそれを行うためにCGAffineTransform(translationX: , y:)を使用し、ズーム後にビューの位置を調整することを検討する必要があります。

さらに、UIScrollViewがズームを行う最も簡単な方法であることにも同意します。

+0

解決策は、ビューコントローラを既にズームします。私はピンチジェスチャーでズームイン/ズームアウトが必要です。 –

+1

@AkhilNair、答えがより詳細な解決策を提供するために更新されました。 –

+0

更新された質問を確認してください。今私はscrollViewを使用する予定です。 –

関連する問題