tableView的分割线问题

作者: Andyzhao | 来源:发表于2015-11-15 12:26 被阅读3057次
    • 总所周知tableView的本身分割线我们几乎不用,一种简单的实现方式就是给cell添加一个UIView,然后再设置约束。本文记录另外一种也比较简单的思路
    - (void)setFrame:(CGRect)frame
    
    • 项目中的示例如下图:
    示例.png
    • 自己做一下就是下图
    cell分割线示例.png
    • 那么怎么比较简单的做出这样的效果呢,上文已经提到只要在自定义cell中重写 - setFrame:(CGRect)frame
    - (void)setFrame:(CGRect)frame
    {
        frame.size.height -= 20;
        frame.origin.x += 10;
        frame.size.width -= 20;
        [super setFrame:frame];
    }
    
    • 为什么重写- setFrame

      • 重写- setFrame的目的就是:拦截cell设置Frame的过程
    • 我设置的self.tableView.rowHeight = 220; 当在- setFrame中设置frame.size.height -= 20;时高度就会减少20,所以能看到下方tableView的可以当做分割线的背景色。

    • 可能有的疑问1:高度会不会第二次计算就变为200?

      • frame是系统算好以后传过来的,每次都会根据self.tableView.rowHeight = 220,所以每次不会越来越少。
    • 可能有的疑问2:一定要在自定义的cell中设置吗?在控制器的-viewDidAppear中可以吗?

      • 绝对不可以,- viewDidAppear是控制器完全显示之后调用,真实开发过程中我们发请求给服务器,数据可能2秒以后才回来,也就是cell可能2秒以后才有数据,就算你能改掉,那cell循环利用又会回来了,所以不行。

    - setFrame其余用处

    • 当自定义控件给别人用时,你不希望别人修改你控件的尺寸,但使用者很有可能不知道尺寸你不希望他设置,所以这个时候就需要在自定义控件中重写- setFrame方法,防止别人改,更严谨的写法是也要重写-setBounds方法.

    相关文章

      网友评论

      • 张俊一:喜欢
      • 扣肉快快跑:受教了
      • 超_iOS:请问楼主的分割线是cell之间的缝隙?这么宽难道不是间隔?
        超_iOS:@小菜超 666
      • 8ae158dda3f2:你好,我自己今天试了一下,但是tableview的背景颜色怎么设置,我设置self.tableview.backgroundcolor运行之后 缝隙颜色还是白色,我设置的颜色没起作用,这是怎么回事?
      • fallrainy:非常聪明的一种方法,赞。

      本文标题:tableView的分割线问题

      本文链接:https://www.haomeiwen.com/subject/fhskhttx.html