UITableViewCell 在 iOS 7 中左右有额外的间距

Posted

技术标签:

【中文标题】UITableViewCell 在 iOS 7 中左右有额外的间距【英文标题】:UITableViewCell has extra spacing on left and right in iOS 7 【发布时间】:2013-10-25 03:06:21 【问题描述】:

我已经使用以下代码修复了分隔符问题:

if([tableView respondsToSelector:@selector(setSeparatorInset:)]) 
      [tableView setSeparatorInset:UIEdgeInsetsZero];

但在ios7中UITableViewcell.textLabeldetailTextLabel的左右边缘之间仍有较大的差距

我有自定义 UITableViewCells,我在其中指定文本标签的位置,因此这会导致标签与 iOS 6 和 7 中的标准单元格不对齐。

有什么想法吗?

【问题讨论】:

能否提供截图? 如何创建自己的自定义单元格?恕我直言,工作量不大。 如果您通过 xcode 4.X 使用它,它将正常工作。它与 Xcode 5 的问题。而且没有出路。您必须使用自定义单元有条件地分别为 ios6 和 ios7 编译代码。 【参考方案1】:

尝试以下解决方案,该解决方案将在 ios 6,7 上保持一致 你可以把自定义UILabel 连接到自定义UITableViewCell 类。

您可以通过将 UIImageView 放在单元格的底部边缘来设置分隔符 并将情节提要中的分隔符样式设置为无。

【讨论】:

【参考方案2】:

你在使用故事板吗?如果你是,最好从情节提要中做到这一点。从情节提要的 UIViewController 中选择您的 UITableView 对象。在“Attributes Inspector”下,找到“Separator Inset”,选择“Custom”并确保“Left”和“Right”均为0。

屏幕截图:-

【讨论】:

【参考方案3】:

对于 UITableViewCell,cell.textLabel 和 detailTextLabel 的框架只能在 UITableViewCell 的子类中修改。试试这个:

- (void)layoutSubviews
    [super layoutSubviews];
    self.textLabel.frame = self.textLbFrame;
   self.detailTextLbFrame = self.detailTextLabel.frame; 

【讨论】:

【参考方案4】:

在情节提要中配置约束时有一些选项可以使约束相对于边距。在表格视图的情况下,默认情况下似乎选择了该选项。

修复:选择每个水平约束,选择Superview.Leading / Trailing并取消选中Relative to margin

【讨论】:

以上是关于UITableViewCell 在 iOS 7 中左右有额外的间距的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS 7上的UITableViewCell左侧获得复选标记,就像在设置中一样?

在 iOS 7 中取消 UITableViewCell 滑动删除时收到通知

带有 UITextView 的 iOS 7 UITableViewCell 隐藏在键盘后面

在 iOS 7 上的 UITableViewCell 之间绘制自定义分隔线

自定义 UITableViewCell 中的按钮在 iOS 7 中没有响应

iOS 7 和 iOS 8 中动态 UITableViewCell 的高度是不可能的