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

2016-10-22  本文已影响211人  mkb2

要实现的样子

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的位置,基本是异曲同工的作用,就不赘述了~

上一篇 下一篇

猜你喜欢

热点阅读