ios - Swift Eureka 自定义单元格图片全屏

标签 ios swift uiimageview eureka-forms

我正在尝试在 Eureka 中创建一个显示图像的自定义单元格。当点击图像时,图像会全屏显示,背景为黑色。

通常你用 view.addSubview(newImageView) 来做,但 Eureka cell 似乎没有 View 类。

这是我迄今为止得到的单元格信息:

final class ImageViewCell: Cell<ImageView>, CellType {

@IBOutlet weak var viewImage: UIImageView!

//let storage = Storage.storage().reference()

required init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override func setup() {
    super.setup()
    //cell not selectable
    selectionStyle = .none

    viewImage.contentMode = .scaleAspectFill
    viewImage.clipsToBounds = true

    height = {return 300 }

    //make userImage reconize tapping
    let tapRec = UITapGestureRecognizer(target: self, action: #selector(imageTapHandler(tapGestureRecognizer:)))
    viewImage.addGestureRecognizer(tapRec)
    viewImage.isUserInteractionEnabled = true

}

@objc func imageTapHandler(tapGestureRecognizer: UITapGestureRecognizer) {
    let imageView = tapGestureRecognizer.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)
    view.addSubview(newImageView)


}

@objc func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {

    sender.view?.removeFromSuperview()
}

override func update() {
    super.update()

    // we do not want to show the default UITableViewCell's textLabel
    textLabel?.text = nil

    // get the value from our row
    guard let imageData = row.value else { return }

    // get user image data from value
    let downloadData = imageData.pictureData

    viewImage.image = UIImage(data: downloadData)


}



}

尝试 addSubview 时收到“使用未解析的标识符“ View ””。

我尝试过使用contentView代替view,结果是这样的:

View 的屏幕截图

最佳答案

如果您想全屏显示图像,则单元格的 contentView 或保存此单元格的 viewController subview 不适合添加此图像 作为 subview

对此的正确解决方案是在容器 ViewController 中使用 onCellSelection(如下所示)回调并呈现一个新的 ViewController仅显示全屏图像或任何您想要的自定义。

imageCell.onCellSelection({[weak self] (cell, row) in
      let imageVC = DisplayViewController()
      imageVC.image = cell.viewImage.image
      self?.present(imageVC, animated: true, completion: nil)
})

如果您只想在用户点击单元格中的图像时显示全屏,那么您应该在容器 ViewController 中获取 tapGesture callback 并显示如上图。

关于ios - Swift Eureka 自定义单元格图片全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50777389/

相关文章:

ios - 用户点击 "don' t 允许后显示 UILocalNotification 请求”

swift - UIImageView:将多个 UIViewContentMode 属性应用于一个 UIImageView?

objective-c - 如何修复 'imageNamed:'错误

ios - 在 iTunes 中更改 iOS 应用名称

iOS 应用程序构建上传问题

ios - 非 Apple 信标未调用 Central Manager 的 didDiscoverPeripheral 方法

swift - 从字典数组中删除重复值

ios - 使用 UIImage 全屏需要什么类型/尺寸的图片?

ios - Cocoapods:修改资源的最佳方式是什么

Swift switch case 语句可以有多个参数吗?