美文网首页
有图有真相--cell间距的几种写法

有图有真相--cell间距的几种写法

作者: mkb2 | 来源:发表于2016-10-22 11:13 被阅读211次

    要实现的样子

    cell之间的间距

    好多应用都要这样写,那么有哪几种方法那?

    原来的样子,假设cell的高度是100dx,要求间距是10dx

    方法一.增加cell的高度(底部还会有10dx空白)

    方法一解释图

    1.我们在代理方法高度的时候,返回cellHeight这个变量(之前cellHeight = maxY(绿色view)+10
    2.让cell的背景颜色成为[UIColor clearColor]
    3.设置侧橙色位置的背景图片或者颜色成为白色

    方法一可以实现,但是talbeView的底部空出来了10dx

    方法二.让(橙色+绿色)view在白色view的y值变成10dx,(变相的给cell加上了10dx)

    方法二消除tableview底部10dx的问题,修改了detailView(橙色+绿色view)的y值

    0.(橙色+绿色)view在计算frame的时候,设置他的y值是10dx
    1.我们在代理方法高度的时候,返回cellHeight这个变量(之前cellHeight = maxY(绿色view)
    2.让cell的背景颜色成为[UIColor clearColor]
    3.设置侧橙色位置的背景图片或者颜色成为白色

    注意!cellHeight = maxY(绿色view)!!!,如果是方法一cellHeight = maxY(绿色view)+10会是神马样子?
    第一个cell,离顶部10dx,但是cell和cell之间的距离都是20dx,当然,最后一个cell,底部还是有10dx的间距,

    所以cellHeight 千万不要+10,方法二值让detailView.y = 10,就行了(过去是=0)

    方法三. 重写setFrame方法 (个人很喜欢)

    常见的卡片样式

    1.做一个cell,(橙色+绿色)cell,高度是100dx,对内部进行布局
    2.cellHeight = 110dx (直接赋值的时候就是110!!!)
    3.在高度的代理方法中,我们返回高度是cellHeight = 110
    4.重写cell的setFrame:方法

    - (void)setFrame:(CGRect)frame{
        //1.因为cell的高度是100,所以一定要使用“cellHeight - 10” ,得到是一个常量 100,
        // 如果我们写成 frame.size.height = frame.size.height - 10; 那么当你滑动的时候cell的高度是一直变化的,越变越小,原因是setFrame:方法多次调用,每一次,高度都在减小~~~
        frame.size.height = cellHeight - 10;
        //2.给你110,但是你只要100,那么cell是在y=0的地方,(cell底部是留白的,和文章中“方法一”的效果一样),所以我们让他的y值加10,成了“方法2”的效果,---------我们的目标效果
        frame.origin.y += 10;
        //3.横向,设置宽度
        //ScreenWidth - 30 ,使用固定的值,结果也是固定的,不会睡着该方法的调用,而发生变化,
        frame.size.width = ScreenWidth - 30;
        frame.origin.x = 15;
        
        [super setFrame:frame];
    }
    
    cell的切片图
    为毛线拿出这张图,就是告诉大家,通过方法三setFrame:方法中,cell的实际高度是100(frame.size.height = cellHeight - 10;),而方法一方法二中的cell的高度是110,改了内部的位置而已,切记~

    其实还要几种其他的方法,例如在layoutSubview方法中,修改了contentView的位置,基本是异曲同工的作用,就不赘述了~

    相关文章

      网友评论

          本文标题:有图有真相--cell间距的几种写法

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