右侧细节 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