2017-04-11 17 views
0

画像ビューにタップジェスチャ認識機能のアクションを追加しました。画像がタップされると、それは全画面に拡大され、一度タップされると全画面を閉じる。すでに展開されている画像を拡大するにはどうすればいいですか?画像をフルスクリーンにするためのコードは次のとおりです。拡大表示のピンチジェスチャ認識機能

//expand image 


let newImageView: UIImageView! 

@IBAction func imageTapped(_ sender: UITapGestureRecognizer) 




{ 
    let imageView = sender.view as! UIImageView 

    let scrollView = UIScrollView(frame: self.view.frame) 


    let newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = self.view.frame 
    newImageView.backgroundColor = .black 
    newImageView.contentMode = .scaleAspectFit 
    newImageView.isUserInteractionEnabled = true 


    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage)) 
    scrollView.addGestureRecognizer(tap) 


    scrollView.delegate = self 
    scrollView.minimumZoomScale = 1.0 
    scrollView.maximumZoomScale = 5.0 

    scrollView.addSubview(newImageView) 

    self.view.addSubview(scrollView) 
} 

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

func dismissFullscreenImage(_ sender: UITapGestureRecognizer) { 
    sender.view?.removeFromSuperview() 
} 

答えて

0

するとフルあなたがしたいショー代わりにscrollviewを使用します。imageView

let newImageView: UIImageView! 

@IBAction func imageTapped(_ sender: UITapGestureRecognizer) 
{ 
    let imageView = sender.view as! UIImageView 

    let scrollView = UIScrollView(frame: self.view.frame); 

    newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = self.view.frame 
    newImageView.backgroundColor = .black 
    newImageView.contentMode = .scaleAspectFit 
    newImageView.isUserInteractionEnabled = true 


    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage)) 
    scrollView.addGestureRecognizer(tap) 

    scrollView.delegate = self 
    scrollView.minimumZoomScale = 1.0 
    scrollView.maximumZoomScale = 5.0 

    scrollView.addSubview(newImageView) 
    self.view.addSubview(scrollView) 
} 

これは私がズームすることができますが、私は探していますものではありません

func viewForZooming(in scrollView: UIScrollView) -> UIView? 
{ 
    return newImageView; 
} 
+0

funcをviewForZoomingデリゲートを覚えて、私は触れることができるように、フルスクリーンに行きたい、と一度フルスクリーンにズームする機能。私は同じページに表示する必要がある他の情報と "プロファイル"ページ上の複数の画像を持っています。 –

+0

これは、クラスが "let newImageView:UIImageView!"のイニシャライザを持たないことを示すエラーを返しました。これをnilに設定しようとしましたが、ビルドしましたがズームしませんでした。 –

+0

あなたのコードを更新できますか?だから私はそれで何が間違っているか確認できますか? –

0

あなたはImageViewのをズームしたい場合、あなたはUIScrollViewの上ImageViewのを追加して、下のメソッドを追加する必要があります。詳細については

- (CGRect)zoomRectForScrollView:(UIScrollView *)scrollView withScale:(float)scale withCenter:(CGPoint)center { 

    CGRect zoomRect; 

    // The zoom rect is in the content view's coordinates. 
    // At a zoom scale of 1.0, it would be the size of the 
    // imageScrollView's bounds. 
    // As the zoom scale decreases, so more content is visible, 
    // the size of the rect grows. 
    zoomRect.size.height = scrollView.frame.size.height/scale; 
    zoomRect.size.width = scrollView.frame.size.width/scale; 

    // choose an origin so as to get the right center. 
    zoomRect.origin.x = center.x - (zoomRect.size.width/2.0); 
    zoomRect.origin.y = center.y - (zoomRect.size.height/2.0); 

    return zoomRect; 
} 

https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html

関連する問題