【问题标题】:Custom scrolling drawing layer over UITableViewUITableView 上的自定义滚动绘图层
【发布时间】:2019-08-27 01:41:39
【问题描述】:

我已经为这个问题苦苦挣扎了好几天,所以我希望有人能帮助我...... 我有一个包含多个单元格的分组 UITableView。我想在 UITableView 上方绘制一些自定义图形,这些图形会随着表格的内容滚动。具体来说,我想用点画一条线,像这样加入 UITableViewCells(跨部分):

当然,如果我们的单元格比屏幕能够显示的多,则具有自定义绘图的上层应该与下层单元格一起移动。 我试图继承 UITableView 并覆盖它的 -drawRect 方法,但它没有用。即使我不会调用[super drawRect:rect],表格内容显示也没有问题。 我试图向 UITableView 添加一个新的子视图,但是当它从其数据源中获取单元格和部分时,它会动态更改它的大小......我没有想法......

尽管网络上到处都是自定义 UITableViewCell 示例,但我还没有找到与我的概念相似的东西...

谁能帮我实现上述功能?

【问题讨论】:

    标签: objective-c ios uitableview uikit


    【解决方案1】:

    首先你应该继承 UITableView。然后创建另一个 UIView 并将其添加为自定义 UITableVIew 的子视图。

    接下来覆盖 UITableView 的 contentOffset 属性。

    -(void)setContentOffset:(CGPoint)contentOffset
    {
    
        [super setContentOffset:contentOffset];
    
        // Custom code here. Update custom subview here.
    }
    

    这个方法会在 UITableView 滚动时被调用。然后,您可以调整子视图的偏移量并更新其绘图。

    【讨论】:

    • 你确定没有更方便的方法吗?如果我可以将绘图层放置在滚动内容的顶部,UITableView(顺便说一句是 UIScrollView)会自动进行滚动,我只会在 UIScrollView 的坐标系中绘制具有固定框架的静态图形。像这样的东西:i45.tinypic.com/122owef.jpg(红框是屏幕)
    • 您将遇到的问题是不在视图中的单元格实际上并不存在。 UITableView 仅呈现当前视图中的内容。因此,您最好动态确定当前视图中的内容并根据 UITableView 的当前 contentOffset 调整您绘制的内容。
    • 是的,UITableView 的延迟加载行为使这些东西成为问题......我必须考虑未显示的单元格,因为如果我必须将行继续到屏幕边缘有更多的单元格不在视野范围内。也许我会为此功能实现一个自定义视图。无论如何,我会接受你的解决方案,因为它听起来很合理,但我认为我们已经达到了一个目标,即实现自定义视图将花费更少的精力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多