iOS 8:从 UITableViewRowAction 中删除下划线

Posted

技术标签:

【中文标题】iOS 8:从 UITableViewRowAction 中删除下划线【英文标题】:iOS 8: Remove Underline from UITableViewRowAction 【发布时间】:2015-01-06 06:57:04 【问题描述】:

我一直在用这个把头撞到墙上,所以也许这里有人以前做过。

无论如何,我正在尝试更改删除按钮在我的 UITableView 中的外观,并且我已经大致弄清楚了。我通过将背景颜色设置为我真正希望它看起来像的 UIImage 来更改它。

不过,显然 UITableViewRowAction 下方有一条微弱的灰线,我不知道如何使它消失。任何指针将不胜感激。有一个链接指向我在这里谈论的内容:

非常感谢!

【问题讨论】:

【参考方案1】:

这是UITableView 的分隔线。您可以通过将其样式设置为无来删除它。

目标 C:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

斯威夫特:

self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None

最初分隔线不可见,因为我认为在单元格中添加的图像或视图的高度大于单元格高度。

这就是为什么当您滑动分隔线时可见。如果您在模拟器中进行测试,请使用模拟器的 Debug > Color Blended Layers。这有助于跟踪重叠视图。

编辑:

ios 8.0 为 UITableView 引入了 layoutMargins。所以这也可能是原因。

查看此answer 了解更多信息。

它解释了通过将cell layoutMargins设置为UIEdgeInsetsZero来清除布局边距。

【讨论】:

其实不是这样,我一开始也是这么想的:/ 我已经这样做了,相信我,如果我不这样做,我可以看到分隔符,它们没有被掩盖。不过谢谢! “删除”按钮在这里看起来像自定义。因此,请检查该行是否由于自定义视图而可见。 它看起来不像是分隔线,基于this。自定义视图实际上是一个用作背景图像的 UIImage,它只是白色的。如果它不填充视图的行为是平铺,所以线不能来自那里。我真的认为它是 UITableViewRowAction 的一部分,但我找不到它在哪里。 从您的参考图像中可以清楚地看出它没有与视图线重叠。让我看看还有什么其他原因。 您是否指定了任何页脚视图或表格页脚视图。有时页脚视图线也会出现。在早期的 iO​​S 版本中,由于页脚视图,许多人都面临过底线问题。【参考方案2】:

cellForRowAtIndexPath 方法上试试这个

for iOS lower versions

 if(indexPath.row != self.newCarArray.count-1)
   UIImageView *line = [[UIImageView alloc] initWithFrame:CGRectMake(0, 44, 320, 2)];
   line.backgroundColor = [UIColor redColor];
   [cell addSubview:line];
  

适用于 iOS 7 更高版本

 if (indexPath.row == self.newCarArray.count-1) 
    cell.separatorInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, cell.bounds.size.width);
 

【讨论】:

你的意思是在 cellForIndexPath 方法中吗? 在 cellForRowAtIndexPath 方法中 怎么样?现在两个单元格 indexPath.row 都不存在 抱歉输入错误 试过了,没用。我不认为这是一个分隔符。

以上是关于iOS 8:从 UITableViewRowAction 中删除下划线的主要内容,如果未能解决你的问题,请参考以下文章

NSLayoutConstraint layout Margin 从 iOS 7 到 iOS 8 的变化

如何从应用程序 iOS 8 启用/禁用推送通知

iOS 8 照片框架:从 PHAsset 获取文件名

BLE 在将数据从 iOS 7.1 发送到 iOS 8 时花费了太多时间

如何从 Today Extensions(iOS 8) 访问核心数据详细信息?

iOS 8 从 PHAsset 快速加载图像