定制可隐藏seperator的UITableViewCell
2015-04-23 09:53
211 查看
问题描述:
在iOS的app开发中碰到这样的需求:
隐藏UITableView中相邻两个section的separator——即隐藏上方section最下面的separator,以及下方section最上面的seperator。
困难分析:
separator是UITableView的属性,而不是cell、section的属性(但相关属性定义在UITableViewCell.h中),因此无法直接修改seperatorStyle来达到目标。
解决的思路是,隐藏UITableView的separator
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
然后根据cell位置的不同,选择性地在cell中人为绘制separator
实现:
具体实现时有多种办法可供选择:
1. 在xib/storyboard文件中构造自定义cell,在data source中以如下方式进行复用cell = [tableView dequeueReusableCellWithIdentifier:@"custom_cell"];
优点:思路清晰,实现简单
缺点:每个viewController都需要构造cell,而且界面和逻辑耦合严重。
2. 新建cell类,通过参数控制cell绘制separator的位置
cell = [[DriftyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil seperatorStyle:DriftyTableViewCellHideNoSeperator];
优点:逻辑与界面完全解耦,可定制化程度高
缺点:如果要在cell中加入其它元素,如textfield,就必须通过代码添加
3. 让xib/storyboard中的cell继承自定义cell类
优点:结合了xib可视化和代码可定制化的优点
缺点:实现遇到了bug。该思路需要重写自定义cell的initWithCoder方法,在该方法中初始化separotor的位置、颜色、粗细等等。然后在data source中可以
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell_B"]; 但是实现出来发现separator只会在cell的两边出现(在公司贴不了图)。尝试后发现,修改xib文件中的cell背景,使其不是default即可正确显示,暂时不知道原理是什么。
第三种方式是目前采用的方式,在定制其他类型的控件时,也可以使用该方法,以减少代码量、提高控件的可定制度。
在iOS的app开发中碰到这样的需求:
隐藏UITableView中相邻两个section的separator——即隐藏上方section最下面的separator,以及下方section最上面的seperator。
困难分析:
separator是UITableView的属性,而不是cell、section的属性(但相关属性定义在UITableViewCell.h中),因此无法直接修改seperatorStyle来达到目标。
解决的思路是,隐藏UITableView的separator
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
然后根据cell位置的不同,选择性地在cell中人为绘制separator
实现:
具体实现时有多种办法可供选择:
1. 在xib/storyboard文件中构造自定义cell,在data source中以如下方式进行复用cell = [tableView dequeueReusableCellWithIdentifier:@"custom_cell"];
优点:思路清晰,实现简单
缺点:每个viewController都需要构造cell,而且界面和逻辑耦合严重。
2. 新建cell类,通过参数控制cell绘制separator的位置
cell = [[DriftyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil seperatorStyle:DriftyTableViewCellHideNoSeperator];
优点:逻辑与界面完全解耦,可定制化程度高
缺点:如果要在cell中加入其它元素,如textfield,就必须通过代码添加
3. 让xib/storyboard中的cell继承自定义cell类
优点:结合了xib可视化和代码可定制化的优点
缺点:实现遇到了bug。该思路需要重写自定义cell的initWithCoder方法,在该方法中初始化separotor的位置、颜色、粗细等等。然后在data source中可以
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell_B"]; 但是实现出来发现separator只会在cell的两边出现(在公司贴不了图)。尝试后发现,修改xib文件中的cell背景,使其不是default即可正确显示,暂时不知道原理是什么。
第三种方式是目前采用的方式,在定制其他类型的控件时,也可以使用该方法,以减少代码量、提高控件的可定制度。
相关文章推荐
- 给定制的UITableViewCell里的控件点击设置代理
- 定制UITableViewCell
- xcode4.3.1定制UITableviewCell实现类似微博的分组效果
- 使用XIB文件来定制你的UITableViewCell
- 定制UITableviewCell实现类似微博的分组效果
- iOS 在自定制UITableViewCell 在cell的中实现点击跳页面
- 键盘定制iOS学习笔记9-软键盘的隐藏
- 定制android.jar-[使用内部(com.android.internal)和隐藏(@hide)API]
- storyboard中用xib文件创建定制的UITableViewCell对象
- UITableViewCell定制
- 定制UITableViewCell
- 重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件
- UITableViewCell:隐藏删除按钮和设置删除按钮的标题
- 定制scrollView来处理自动显示与隐藏键盘
- UITableViewCell定制
- 第一篇、Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限
- 定制 UITableViewCell 表视图单元格
- 定制UITableviewCell实现类似微博的分组效果
- 使用内部(com.android.internal)和隐藏(@hide)API[第2部分,定制android.jar]
- 使用内部(com.android.internal)和隐藏(@hide)API ——[第四部分 定制ADT]