【发布时间】:2016-04-14 03:48:51
【问题描述】:
对于我正在制作的应用程序,我希望用户能够单击图像以使其在应用程序上全屏显示。然后用户可以单击现在全屏的图像使其成为原始大小。
这可能吗?
任何帮助都会很棒,我只是 xcode 的初学者,并且有兴趣知道如何做到这一点。
【问题讨论】:
标签: swift image fullscreen
对于我正在制作的应用程序,我希望用户能够单击图像以使其在应用程序上全屏显示。然后用户可以单击现在全屏的图像使其成为原始大小。
这可能吗?
任何帮助都会很棒,我只是 xcode 的初学者,并且有兴趣知道如何做到这一点。
【问题讨论】:
标签: swift image fullscreen
这是在单击图像时创建全屏图像(带有黑条以保持纵横比)的代码。
要使用它,请将此代码添加到保存图像的 ViewController。
然后,对于您要扩展的 imageView,选中 Attributes Inspector 中的 userInteractionEnabled 框,并添加一个 TapGestureRecognizer 到它并设置它调用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()
}
此代码通过创建一个涵盖其他所有内容的新全屏图像来工作。它有自己的 TapGestureRecognizer,可以从其 superView 中移除全屏图像(从而露出原始屏幕)。
Swift 3 和 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()
}
【讨论】:
UIImageView 设置 userInteractionEnabled,并以编程方式在 cellForRowAt 中添加 UITapGestureRecognizer。
UIImageView 的UITapGestureRecognizer 的目标。
viewDidLoad 添加let pictureTap = UITapGestureRecognizer(target: self, action: #selector(YourClass.yourFunction)) 然后yourImageView.addGestureRecognizer(pictureTap) 然后yourImageView.isUserInteractionEnabled = true //also can be set via storyboard