当用户点击 FSPagerView 中显示的图像时,图像会全屏显示,这正是我想要的。然而,一旦再次触摸屏幕并且全屏图像消失,再次触摸图像时它不会全屏。我将不得不离开 View 并返回页面以使其全屏显示。是什么导致图像不止一次全屏显示?
public func numberOfItems(in pagerView: FSPagerView) -> Int {
return imagesArray.count
}
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
cell.imageView?.contentMode = .scaleAspectFill
return cell
}
func pagerView(_ pagerView: FSPagerView, shouldSelectItemAt index: Int) -> Bool {
return true
}
func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
cell.imageView?.contentMode = .scaleAspectFill
let imageView = cell.imageView 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) {
sender.view?.removeFromSuperview()
self.navigationController?.isNavigationBarHidden = false
self.tabBarController?.tabBar.isHidden = false
// sender.view?.removeFromSuperview()
}
最佳答案
将 tapGestureRecognizer
添加到您在 cellForItemAt
中的图像并触发全屏图像:
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
cell.imageView?.loadImageUsingCacheWithUrlString(urlString: imagesArray[index])
cell.imageView?.contentMode = .scaleAspectFill
// Add a gesture recognizer the first time
if cell.imageView?.gestureRecognizers?.count != 1 {
let tap = UITapGestureRecognizer(target: self, action: #selector(imageTapped))
cell.imageView?.isUserInteractionEnabled = true
cell.imageView?.addGestureRecognizer(tap)
}
return cell
}
@objc 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
}
关于ios - 图片只全屏显示一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006224/