iOS 7 自定义分隔符不模仿默认分隔符行为。
Posted
技术标签:
【中文标题】iOS 7 自定义分隔符不模仿默认分隔符行为。【英文标题】:iOS 7 custom separator does not mimic default separator behavior. 【发布时间】:2014-02-18 20:06:05 【问题描述】:我正在尝试在我的自定义 UITableViewCell
中绘制自定义分隔符。
CALayer *border = [CALayer layer];
border.frame = CGRectMake(0, 60, 320, 1.0f);
border.backgroundColor = [UIColor blackColor].CGColor;
[self.layer addSublayer:border];
我的自定义UITableViewCell
高度是60
。
由于某种原因,当我滚动到表格视图的底部时,所有分隔符都正常显示,但是当我向上滚动表格时,顶部的表格单元格不显示我的分隔符。
我可以使用y
of 59
设置我的分隔符:
CALayer *border = [CALayer layer];
border.frame = CGRectMake(0, 59, 320, 1.0f);
border.backgroundColor = [UIColor blackColor].CGColor;
[self.layer addSublayer:border];
但是这种行为是不希望的,因为当我选择一行时,我希望前一个单元格上的分隔符消失,这仅在 y
是 60
时发生,这是我的单元格的高度。
【问题讨论】:
【参考方案1】:如果您的单元格高度为 60pts,则将 UIView 的 y 位置设置为 60pts 和 1pt 高度会将其绘制到单元格边界之外。
这最初可能会起作用,因为单元格添加到 tableView 的顺序。即顶部单元格是在第二个单元格向下添加之后添加的,因此 1pt 分隔符被绘制在第二个单元格的顶部......但是当你向上滚动,单元格以不同的顺序添加回 tableView,导致分隔符隐藏,因为它下方的单元格被绘制在顶部。
要解决这个问题,您必须在单元格边界内绘制分隔符。
我真的不明白为什么您希望前一个单元格上的分隔符(我假设您的意思是最后一个选定的单元格)消失,但是您可以通过在自定义 UITableViewCell 子类上覆盖 setHighlighted:animated:
和 setSelected:animated:
来实现这一点吗?
【讨论】:
我不希望最后一个选定单元格的分隔符消失,我希望当前选定单元格分隔符正上方的单元格消失。它类似于默认分隔符,当您选择一个单元格时,您看不到它上面的单元格的分隔符。 嗯,在那种情况下.. 在 tableView 的顶部手动绘制分隔符怎么样?这只是一个想法.. 不确定它是否实用,但您可以更轻松地控制它们的外观等 这似乎很难处理,我在想可能有一个更简单的解决方案。以上是关于iOS 7 自定义分隔符不模仿默认分隔符行为。的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 7 上的 UITableViewCell 之间绘制自定义分隔线
使用自定义的行分隔符,从StreamReader中读取一行字符串
IOS Swift 5 为动态高度 TableView 单元添加自定义 TableViewCell 分隔符