ios - 更改 UITableView 部分标题的字体大小

有人可以指导我更改 UITableView 部分标题中文本的字体大小的最简单方法吗?

我使用以下方法实现了部分标题:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

然后,我明白了如何使用此方法成功更改节标题高度:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

我使用这种方法填充了 UITableView 单元格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

但是,我不知道如何实际增加节标题文本的字体大小 - 或者就此而言字体样式?

有人可以帮忙吗?谢谢。

最佳答案

另一种方法是响应 UITableViewDelegate 方法 willDisplayHeaderView。传递的 View 实际上是一个 UITableViewHeaderFooterView 的实例。

下面的示例更改了字体,并且还使标题文本在单元格内垂直和水平居中。请注意,您还应该响应 heightForHeaderInSection 以在表格 View 的布局中考虑对标题高度的任何更改。 (也就是说,如果您决定在此 willDisplayHeaderView 方法中更改标题高度。)

然后您可以响应 titleForHeaderInSection 方法,以使用不同的节标题重用这个配置的标题。

Objective-C

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;

    header.textLabel.textColor = [UIColor redColor];
    header.textLabel.font = [UIFont boldSystemFontOfSize:18];
    CGRect headerFrame = header.frame;
    header.textLabel.frame = headerFrame;
    header.textLabel.textAlignment = NSTextAlignmentCenter;
}

Swift 1.2

(注意:如果您的 View Controller 是 UITableViewController 的后代,则需要将其声明为 override func。)

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
{
    let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView

    header.textLabel.textColor = UIColor.redColor()
    header.textLabel.font = UIFont.boldSystemFontOfSize(18)
    header.textLabel.frame = header.frame
    header.textLabel.textAlignment = NSTextAlignment.Center
}

Swift 3.0

如果您的标题 View 不是 UITableViewHeaderFooterView,此代码还可以确保应用不会崩溃:

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    guard let header = view as? UITableViewHeaderFooterView else { return }
    header.textLabel?.textColor = UIColor.red
    header.textLabel?.font = UIFont.boldSystemFont(ofSize: 18)
    header.textLabel?.frame = header.bounds
    header.textLabel?.textAlignment = .center
}

https://stackoverflow.com/questions/19802336/

相关文章:

ios - 在 iPhone App 中如何检测设备的屏幕分辨率

ios - iPhone/iPad的UILabel如何设置粗体和斜体?

objective-c - 错误 : writable atomic property cannot

ios - 如何比较 UIColors?

ios - 如何在 UIView 的顶部添加边框

ios - UITableView 设置为静态单元格。是否可以以编程方式隐藏某些单元格?

objective-c - NSInteger 的 NSLog/printf 说明符?

objective-c - 为什么在 iOS 中使用前导下划线重命名合成属性?

ios - Objective-C中的方法重载?

ios - SDK iOS 8.0 中的产品类型单元测试包需要代码签名