2016-01-09 6 views
10

Für die App, die ich mache, möchte ich, dass der Benutzer in der Lage ist, auf ein Bild zu klicken, um es in Vollbild auf der App zu machen. Und dann der Benutzer in der Lage sein, klicken Sie auf das jetzt Vollbild, um es auf die ursprüngliche Größe zu machen.Swift - Wie kann ich ein Bild im Vollbildmodus machen, wenn ich darauf klicke und dann wieder in Originalgröße?

Ist das möglich?

Jede Hilfe wäre toll, ich bin nur ein Anfänger Lerner auf Xcode und bin daran interessiert zu wissen, wie dies zu tun.

Antwort

49

Hier ist Code, der ein Vollbild erzeugt (mit schwarzen Balken Seitenverhältnis zu erhalten), wenn ein Bild angeklickt wird.

Um dies zu nutzen, diesen Code zu Ihrem Viewcontroller hinzufügen, die das Bild enthält.

Dann für Ihre Imageview, die Sie erweitern möchten, markieren Sie das Kästchen für userInteractionEnabled im Attribute Inspector, und fügen Sie einen TapGestureRecognizer es und legen Sie es imageTapped nennen.

@IBAction func imageTapped(sender: UITapGestureRecognizer) { 
    let imageView = sender.view as! UIImageView 
    let newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = UIScreen.main.bounds 
    newImageView.backgroundColor = .blackColor() 
    newImageView.contentMode = .ScaleAspectFit 
    newImageView.userInteractionEnabled = true 
    let tap = UITapGestureRecognizer(target: self, action: "dismissFullscreenImage:") 
    newImageView.addGestureRecognizer(tap) 
    self.view.addSubview(newImageView) 
    self.navigationController?.isNavigationBarHidden = true 
    self.tabBarController?.tabBar.isHidden = true 
} 

func dismissFullscreenImage(sender: UITapGestureRecognizer) { 
    self.navigationController?.isNavigationBarHidden = false 
    self.tabBarController?.tabBar.isHidden = false 
    sender.view?.removeFromSuperview() 
} 

Dieser Code funktioniert, indem eine neue Vollbild-Bild zu schaffen, die alles andere überdeckt. Es hat seine eigenen TapGestureRecognizer, die das Vollbild-Bild von seiner superview entfernt (und damit den ursprünglichen Bildschirm deckt).


Update für Swift 3 und 4:

@IBAction func imageTapped(_ sender: UITapGestureRecognizer) { 
    let imageView = sender.view as! UIImageView 
    let newImageView = UIImageView(image: imageView.image) 
    newImageView.frame = UIScreen.main.bounds 
    newImageView.backgroundColor = .black 
    newImageView.contentMode = .scaleAspectFit 
    newImageView.isUserInteractionEnabled = true 
    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage)) 
    newImageView.addGestureRecognizer(tap) 
    self.view.addSubview(newImageView) 
    self.navigationController?.isNavigationBarHidden = true 
    self.tabBarController?.tabBar.isHidden = true 
} 

@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) { 
    self.navigationController?.isNavigationBarHidden = false 
    self.tabBarController?.tabBar.isHidden = false 
    sender.view?.removeFromSuperview() 
} 
+1

Ist diese Arbeit für Bildansichten innerhalb Tabellenansicht Zelle ?? – WoShiNiBaBa

+0

@WoShiNiBaBa, ich verstehe nicht warum nicht. Sie sollten ** userInteractionEnabled ** für die 'UIImageView' in Ihrer Zelle setzen und den' UITapGestureRecognizer' programmatisch in 'cellForRowAt' hinzufügen. – vacawama

+0

Wie verbindest du deinen Code mit einem Bild? –

Verwandte Themen