2017-04-11 39 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) 
} 

記得viewForZooming代表FUNC

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

這讓我放大,但不是我所期待的,我希望它能夠被感動,進入全屏,並且一旦進入全屏變焦能力。我在「個人資料」頁面上有多個圖片,其他信息需要在同一頁面上顯示。 –

+0

這帶來了一個錯誤,指出類沒有「let newImageView:UIImageView!」的初始值設定項,我試着將它設置爲零,但它沒有縮放。 –

+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