在 UITableView 的表格部分下添加文本

Posted

技术标签:

【中文标题】在 UITableView 的表格部分下添加文本【英文标题】:Add text under table sections in UITableView 【发布时间】:2014-02-01 23:07:22 【问题描述】:

我试图模仿 ios 7“快捷方式”之类的视图。

我使用了带有静态单元格、1 节和 2 行的 UITableViewController。对于文本“创建...的快捷方式”,我尝试了 UILabel 以及节页脚。页脚的问题是我无法找到将长文本包装成多行的方法。所以我很好奇在部分下实现文本的“标准”或首选方式是什么?谢谢!

【问题讨论】:

【参考方案1】:

如果您在情节提要中选择表格视图部分并在“页脚”中输入您的文本,它将自动换行。

如果您想更好地控制字体,可以使用 -[UITableViewDelegate tableView:viewForFooterInSection:] 设置自定义页脚视图

【讨论】:

谢谢,这成功了!我缺少的是表格视图样式必须是“分组”,否则页脚不会自动换行 @Jesse:如何更改页脚文本的对齐方式?有什么想法吗? @Nit 在 Interface Builder 中,通过将 UIView 拖到表格视图底部来创建自定义页脚视图。在页脚视图中添加一个 UILabel 并设置 UILabel 的对齐方式。 谢谢@marsant,我也错过了这个,我被困了将近一个小时,哈哈【参考方案2】:

以下代码复制了您在上面显示的内容。我没有创建标签并返回它,而是创建了一个简单的 UIView,它是一些任意硬编码的高度(您可能希望更改它以满足您的需要),然后创建一个标签并将标签添加到视图中,返回视图,这样您就可以像创建框架时那样在视图中将标签居中。通过将行数设置为 0,您实际上是在告诉标签会有多行,并且我在标签上设置了一个自动调整大小的蒙版,这样如果视图旋转,文本仍将在视图中保持居中,其中任一填充有 10 个点边。您还需要确保返回适当的 heightForFooterInSection,以防您以后决定在其下方添加一些内容,它不会与您的页脚重叠。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 80)];

    UILabel *explanationLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, self.view.frame.size.width - 20, 80)];
    explanationLabel.textColor = [UIColor darkGrayColor];
    explanationLabel.numberOfLines = 0;
    explanationLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    explanationLabel.text = @"Create a shortcut that will automatically expand into the word or phrase as you type.";
    [footerView addSubview:explanationLabel];

    return footerView;


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
    return 80;

给我这个:

【讨论】:

请注意,标签居中应该是UILabel *explanationLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, self.view.frame.size.width - 20, 80)];【参考方案3】:

SWIFT 4 版本

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 

    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 80))

    let explanationLabel = UILabel(frame: CGRect(x: 10, y: 0, width: view.frame.size.width - 20, height: 80))
    explanationLabel.textColor = UIColor.darkGray
    explanationLabel.numberOfLines = 0
    explanationLabel.text = tableDataSectionFooters[section]
    footerView.addSubview(explanationLabel as? UIView ?? UIView())
    return footerView


func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat 
    return 80

【讨论】:

【参考方案4】:

在页脚中使用 UILabel 并将其设置为换行(行数 = 0)

【讨论】:

【参考方案5】:

所有其他答案在使用 UILabel 时都是正确的,但要达到 100% 相同的效果,您必须使用标签的属性文本属性。您还可以添加原始快捷方式屏幕截图中显示的缩进。

【讨论】:

以上是关于在 UITableView 的表格部分下添加文本的主要内容,如果未能解决你的问题,请参考以下文章

静态部分/单元格的 UITableView 背景图像

如何将图像添加到表格视图“标题”中?

带有文本字段的 UiTableView - 出现键盘时滚动

仅在编辑模式下的 UITableView 部分标题

在 ios 8 中将集合或表格视图或自定义视图添加到滚动视图

UITableView 在部分中添加按钮