gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:25:37 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com