首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在iPhone中自定义tableView分隔符

如何在iPhone中自定义tableView分隔符
EN

Stack Overflow用户
提问于 2009-09-03 10:02:10
回答 12查看 101.1K关注 0票数 67

默认情况下,uitableview中有一个单行分隔符。

但我想把我的定制产品线作为分隔符。

有可能吗?多么?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-09-03 10:20:48

如果您不想使用UITableViewseparatorColor属性更改分隔符的颜色,则可以将separatorStyle属性设置为UITableViewCellSeparatorStyleNone,然后执行以下任一操作:

  • 创建包含自定义分隔符的自定义UITableViewCell
  • 创建包含自定义分隔符的备用UITableViewCells

例如,如果您的表当前显示5行,您可以将其更新为显示9行,而索引1、3、5、7处的行将是分隔单元。

票数 81
EN

Stack Overflow用户

发布于 2013-02-22 03:11:47

更好的解决方案是使用单元格的当前宽度和高度。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)];

lineView.backgroundColor = [UIColor darkGrayColor];
[cell.contentView addSubview:lineView];
票数 34
EN

Stack Overflow用户

发布于 2013-03-11 14:09:18

如果您需要为不同的行使用不同的分隔符颜色,或者您希望分隔符在点击时突出显示该行时保持可见,请尝试以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

// We have to use the borderColor/Width as opposed to just setting the 
// backgroundColor else the view becomes transparent and disappears during 
// the cell's selected/highlighted animation
UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake(0, 43, 1024, 1)];
separatorView.layer.borderColor = [UIColor redColor].CGColor;
separatorView.layer.borderWidth = 1.0;
[cell.contentView addSubview:separatorView];

这假设您的单元格的背景色是透明的。

上面的解决方案来自一些广泛的实验。以下是我的发现中的一些笔记,我相信它们会对人们有所帮助:

处于正常“未选中”状态的

  • contentView (您的XIB中的内容,除非您以其他方式编码)通常绘制
  • selectedBackgroundView is
  • backgroundView是可见的(因此,如果您的contentView是透明的,您将看到backgroundView或(如果您没有定义backgroundView,您将看到UITableView本身的背景颜色)

选定单元格后,将立即显示以下内容,而不显示任何动画:

  • contentView中的所有视图/子视图都有它们的backgroundColor被清除(或设置为透明),标签等文本颜色的更改为它们选择的颜色
  • selectedBackgroundView变为可见(此视图始终是单元格的完整大小(自定义框架被忽略,如果需要可以使用子视图)。还要注意,由于某种原因,subViews的backgroundColor不会显示,也许它们像contentView一样设置为透明)。如果您没有定义selectedBackgroundView,则Cocoa将创建/插入蓝色(或灰色)渐变背景,并为您显示此背景)
  • backgroundView is unchanged

取消选中单元格时,将开始播放取消突出显示的动画:

  • selectedBackgroundView alpha属性的动画效果从1.0 (完全不透明)到0.0 (fully transparent).
  • The alpha再次保持不变(因此动画看起来就像是selectedBackgroundView和backgroundView)
  • Only之间的交叉淡入淡出)动画完成后,contentView是否会在“未选中”状态及其子视图背景中重新绘制UIView.backgroundColor‘s再次变为可见(这会导致动画看起来很糟糕,因此建议您不要在contentView)

中使用backgroundView

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1374990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文