右侧细节 UITableViewCell 未在 iPad 上显示整行

Posted

技术标签:

【中文标题】右侧细节 UITableViewCell 未在 iPad 上显示整行【英文标题】:Right Detail UITableViewCell not showing full lines on iPad 【发布时间】:2015-12-26 17:24:53 【问题描述】:

祝大家节日快乐!

我有一个带有 UITableViewController 和多个部分的简单应用程序。 Section 0 使用 Basic UITableViewStyle,Section 1 使用 Right Detail UITableViewStyle。仅在 iPad 上,我遇到了一个非常奇怪的问题,即第 1 节中的 UITableView 的行并没有一直延伸到设备末端,如下图所示:

顶部是Section 0,Basic UITableViewStyle,底部是Right Detail UITableViewStyle。

这是预期的行为、错误(最新的 Xcode 和 ios 9.2),还是有一个简单的解决方法?

请注意,这只是 iPad 的问题,因为它在 iPhone 上看起来很好,包括 6 Plus,并且在模拟器和 iPad Air 2 设备上的行为相同。

对此的任何想法将不胜感激。

更新:

我在这个课程中的代码:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    // Custom label for the section header titles
    UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(15, 0, self.moreTabTableView.frame.size.width, 10)];
    label.textAlignment = NSTextAlignmentCenter;
    label.textColor = [UIColor whiteColor];
    [label setFont:[UIFont systemFontOfSize:15.0]];

    if (section == 0)
    
        label.text = @"Show Your Support";
    
    else if (section == 1)
    
        label.text = @"Connect with the BOS Team";
    
    return label;

都是在 Storyboard 中创建的,所以这是这个类的唯一代码。

更新

我仔细查看了我的代码,看看这是怎么回事。我正在为 UITableViewCell 使用自定义类(称为 CustomMoreTableViewCell),并且我仅在该自定义子类中拥有此代码:

- (void)layoutSubviews

    self.imageView.frame = CGRectMake(8, 8, 30, 30);
    self.textLabel.frame = CGRectMake(47, 11, 300, 21);

我确保图像的大小适合每个单元格。我刚刚将 Donate 单元格设置为自定义 UITableViewCell 子类,它在缩短线条方面做同样的事情。

我可以通过使用自定义 UITableViewView 子类来重现这一点,但我不确定需要什么才能使线条一直走下去(我已经为 imageView 和 textLabel 尝试了多种值)。

【问题讨论】:

请出示您的代码。 是设置行(分隔符)的人。那你是怎么做到的? 感谢@matt - 我忘了提到我实际上是完全在 Storyboard 中创建的。我的代码(我已在问题中显示)仅适用于部分标题。 你能把这部分应用程序的简化版贴在github或其他地方,这样我就可以看到storyboard的配置了吗?或者至少给出复制它的说明...... 问题是当在情节提要中配置了一堆右细节单元格时,它看起来根本不像你的屏幕截图。 嗨@matt,我以前从未使用过 GitHub,但我可以看到重现它的最佳方法(我已经再次尝试)是在故事板中有一个 UITableViewController 和一个带有 2 个部分的 UITableView,第一节的表是基本的,第二节的表是右细节。从“详细信息”标签中删除文本,并确保有一个与 UITableViewCell 关联的图像 (UIImageView),您可以在检查器中通过在单元格中分配一个图像来执行此操作。在 iPad 上运行(模拟器应该足以重现)。你能在这一点上重现它吗? (希望如此!) 【参考方案1】:

将您的 layoutSubviews 实现更改为如下所示:

- (void)layoutSubviews

    [super layoutSubviews];
    self.imageView.frame = CGRectMake(8, 8, 30, 30);
    self.textLabel.frame = CGRectMake(47, 11, 300, 21);
    self.separatorInset = UIEdgeInsetsZero;

如果结果不是您想要的,请相应地调整separatorInset

(但是,最好的方法是使用完全自定义的单元格,而不是像您那样尝试修改现有的内置单元格样式。)

【讨论】:

非常感谢@matt - 该代码就像一个魅力。另外,我很感谢您的建议,为了确保没有任何问题,我可能只使用自定义单元格,但我非常感谢您现在所做的工作。谢谢!

以上是关于右侧细节 UITableViewCell 未在 iPad 上显示整行的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中垂直居中右细节 UILabel

在ios中从uitableviewcell拖放到uiimage视图

UIbutton 未在 UITableViewCell 中更新其标记值

UITableViewCell 未在其中显示 UILabel

UITextView 高度未在 UITableViewCell 中调整大小

UITableViewCell 附件视图按钮未在 ipad 纵向模式下显示