iOS:以其他方式将图像放在UITableView上,UITableView正常工作吗?

问题描述

iOS:目标是将图像放在UITableView上,UITableView正常工作。

通常,将图像放在UITableView上,UITableView的触摸事件为 切断。

这里是现场,有一个钢琴乐谱应用程序。 UITableView逐行显示音符。

然后,用户可以在便笺列表上放置一个画布,然后可以绘制比分。

我需要将自定义图形放在钢琴谱UITableView上,并且UITableView可以正常工作。

这是我的主意:

将绘图视图放在表格视图的单元格下面。

每个单元格都有图纸视图的引用。

每个单元格的顶部都有一个画布切片视图。

关键方法CALayer的{​​{1}}

以下是相关代码

open func render(in ctx: CGContext)

UITableViewCell中使用的画布:

class RenderV: UIView {
    
    var renderer: UIView?
    
    var index = -1

    override func draw(_ rect: CGRect) {
        
        guard let context = UIGraphicsGetCurrentContext()
            else { return }
        var f: CGSize = .zero
        if let v = renderer{
            f = v.frame.size
        }
        let w = frame.size.width
        let h = frame.size.height

        context.translateBy(x: w/2 - f.width/2,y: h * CGFloat(index) - f.height)

        renderer?.layer.render(in: context)
        
    }
}

通话代码

class TableViewCell: UITableViewCell {
    
    
    var renderer: UIView?{
        didSet{
            guard idx > 0 else {
                return
            }
            contain.index = idx
            contain.renderer = renderer
            contain.setNeedsdisplay()
        }
    }
    
    
    @IBOutlet weak var contain: RenderV!
    
    var idx = -1
}

我的解决方案不直观,需要计算。

有更好的主意吗?


这是一个简单的演示效果

111

222

解决方法

我不确定我是否完全理解问题所在。我了解的是,您在UITableView上渲染的视图正在阻止您希望传递给表格的触摸事件,对吗?

如果是这种情况,只需设置视图的isUserInteractionEnabled = false。这将使事件能够渗透到视图中并被UITableView捕获。