如何在 UITableView 中设置 Section 属性?

How do I set Section attributes in UITableView?

背景

我想在 UITabelLabelCell 中设置 Section 属性。

原文Post有过时Obj-CCode/approach低于

这是为 UITable 中的 headers 部分设置字体的代码。我正在尝试将此代码用于 iOS7+。

Obj-C代码

[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont fontWithName:@"MyFont" size:8]];

我觉得应该是这个样子(不确定):

UILabel.appearanceForTraitCollection( trait: UITraitCollection )

但我在转录 UITraitCollection.

时遇到问题

编辑:iOS7+

的最佳当前解决方案

在您的 UITableViewDelegate 中实现一个 tableView 方法:

   func tableView(tableView: UITableView, willDisplayHeaderView view: UIView,
     forSection section: Int) {

        // Background color
        view.tintColor = UIColor.blackColor()

        // Text Color/Font
        let header = view as UITableViewHeaderFooterView
        header.textLabel.textColor = UIColor.greenColor()
        header.textLabel.font = my_font // put the font you want here...
    }

原始 POST 下面(过时的 hacky 解决方案)

调查

搜索有关该主题的 Apple 文档和 SO 问答,我无法弄清楚如何使用 UITraitCollection

不过,我似乎在 this post in SO 中发现了一个可能的破解方法。

我已经用下面的实现对其进行了测试,它似乎可以工作。

我们需要采取三个步骤来创建一个 Objective-C class 方法来完成这项工作。使用桥接 headers,我们可以无缝地调用来自 Swift 的方法。

添加到桥接 Header

#import "BridgeAppearance.h"

创建BridgeAppearance.h

@interface BridgeAppearance : NSObject { }

+ (void)setFontForUITableHeaderFooters: (UIFont*)font;

@end

创建BridgeAppearance.m

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "BridgeAppearance.h"

@implementation BridgeAppearance

+ (void)setFontForUITableHeaderFooters: (UIFont*)font
{
    [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil]
     setFont: font];
}

@end