2017-04-11 1 views
0

J'ai ajouté une action de reconnaissance gestuelle à ma vue. Une fois que l'image est tapée, elle se développe en plein écran et puis rejette plein écran une fois tapé à nouveau. Comment ajouter une pincée pour zoomer sur l'image après qu'elle soit déjà étendue. Voici mon code pour faire l'image en plein écran.Reconnaissance des gestes de pincement sur l'image agrandie

//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() 
} 

Répondre

0

Lorsque vous voulez COM_COMMUNITY_EVENTS_FULL_MAP image permettent d'utiliser à la place scrollviewimageView

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) 
} 

et souvenez-vous viewForZooming délégué func

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

cela me permet de zoomer mais pas ce que je cherche, je le veux pouvoir toucher et aller en mode plein écran, et une fois en mode plein écran la possibilité de zoomer. J'ai plusieurs images sur une page "Profil" avec d'autres informations qui doivent être affichées sur la même page. –

+0

cela a ramené une erreur indiquant que la classe n'a pas d'initialiseurs pour "let newImageView: UIImageView!", J'ai essayé de le définir à zéro et il construit mais n'a pas zoomer. –

+0

pouvez-vous mettre à jour votre code? Donc je peux vérifier ce qui ne va pas? –

0

si vous voulez agrandir l'imageView, vous devez ajouter le imageView sur un UIScrollView et ajoutez la méthode ci-dessous:

- (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; 
} 

pour plus de détails: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html