ios - Swift Eureka 自定义单元格图片全屏
问题描述
我正在尝试在 Eureka 中创建一个显示图像的自定义单元格。当点击图像时,图像以黑色背景全屏显示。
通常你用 view.addSubview(newImageView) 来做,但看起来 Eureka 单元格没有视图类。
这是我到目前为止得到的细胞:
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,结果是这样的:
视图的屏幕截图
解决方案
感谢Kamran,我想我找到了解决方案。
对于 Eureka 行,您始终可以使用 row.onCellSelection 回调。
在我的情况下,我可以在调用自定义行时这样做:
<<< ImageViewCellRow(){ row in
row.value = ImageView(pictureData: data!)
row.onCellSelection(showMe)
}
然后像这样创建一个 showMe 函数:
func showMe(cell: ImageViewCell, row: (ImageViewCellRow)) {
print("tapped my ImageViewCell!")
}
现在您应该能够将全屏图像显示为 Kamran 的代码。
推荐阅读
- javascript - 为什么我会收到此代码的 MongoDB 重复键错误?
- sql - 如何查看 SEQUENCE 脚本
- python - 使用 Python 生成 Ansible YAML 文件
- macos - 当wireshark应用程序已经下载并运行时,命令行出现“找不到命令:tshark”错误
- sql - 每月第一天
- python - 如何检查数字是否在 3x3 网格中重复?
- python - 如何处理 Gurobi 中的 Abs 约束?
- python-3.x - Peewee 加入重复的外键
- javascript - 在 react 中使用 useState 方法从数组中删除前一个对象
- kubernetes - kubernetes vs openshift(路由和服务)