Oto kod, który tworzy obraz pełnoekranowy (z czarnymi pasami w celu zachowania proporcji obrazu) po kliknięciu obrazu.
Aby tego użyć, dodaj ten kod do kontrolera ViewController, który przechowuje obraz.
Następnie za ImageView że chcesz się rozwijać, zaznacz pole wyboru dla userInteractionEnabled w Atrybuty Inspektor i dodać TapGestureRecognizer do niego i ustawić go nazwać imageTapped
.
@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()
}
Ten kod działa, tworząc nowy obraz pełnoekranowy, który obejmuje wszystko inne. Ma własny TapGestureRecognizer, który usuwa obraz pełnoekranowy z jego superwView (i tym samym odsłania oryginalny ekran).
Aktualizacja Swift 3 i 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()
}
Czy to praca dla widoków obrazu wewnątrz widoku tabeli komórce ?? – WoShiNiBaBa
@WoShiNiBaBa, nie rozumiem dlaczego nie. Powinieneś ustawić ** userInteractionEnabled ** dla 'UIImageView' w swojej komórce i programowo dodać' UITapGestureRecognizer' w 'cellForRowAt'. – vacawama
Jak połączyć swój kod z obrazem? –