ios - 图片只全屏显示一次

标签 ios swift uiimageview

当用户点击 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/

相关文章:

由于 cordova-plugin-geolocation,iOS PhoneGap 应用被应用商店拒绝

ios - 从 Controller 外部快速重新加载 collectionView 上的数据

ios - 将模型文件添加到 View Controller ,帮助 UI 正常工作

ios - UIImageView 根据方向使用不同的图像

objective-c - 将 UIImageView 添加到自定义 UITableViewCell

ios - 具有一对多关系的核心数据 - 保存/加载

iOS SecTrustRef 始终为 NULL

android - 使用 Phongap 的不同移动设备的背景图像大小

swift - 尝试对可选字符串进行日期格式化

ios - 无法从 UITabBar 快速获取 UIImageView