要实现的样子
cell之间的间距好多应用都要这样写,那么有哪几种方法那?
原来的样子,假设cell的高度是100dx,要求间距是10dx方法一.增加cell的高度(底部还会有10dx空白)
方法一解释图方法一可以实现,但是talbeView的底部空出来了10dx1.我们在代理方法高度的时候,返回cellHeight这个变量(之前
cellHeight = maxY(绿色view)+10
)
2.让cell的背景颜色成为[UIColor clearColor]
3.设置侧橙色位置的背景图片或者颜色成为白色
方法二.让(橙色+绿色)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的间距,
方法三. 重写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
的位置,基本是异曲同工的作用,就不赘述了~
网友评论