我有一个UITableViewHeaderFooterView,我在其中更改textLabel字体和背景颜色
- UITableViewHeaderFooterView* header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"header"];
- if(!header)
- {
- header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:@"header"];
- [header.textLabel setFont:[UIFont boldSystemFontOfSize:15]];
- [header.contentView setBackgroundColor:[UIColor colorWithRed:213/255.0 green:213/255.0 blue:213/255.0 alpha:1]];
- }
以下是iOS 7的显示方式:
以下是iOS 8的显示方式:
setFont:似乎没有在这里生效,或者在iOS 8上的iOS 8上的15pt字体更大
如您所见,setFont对字体没有影响,但它在textColor上有效.
我错过了什么或那些是“beta bug”(我使用的是来自XCode6 GM种子的模拟器,我在iOS 5 beta 5的iPhone 5上也有同样的问题)?
编辑:iOS 8版本和XCode 6.0.1似乎无法解决问题
解决方法
[SWIFT版本]在UITableView UITableViewStylePlain中遇到同样的问题,即Header字体设置
- override func tableView(tableView: UITableView,viewForHeaderInSection section: Int) {...}
没有效果.这是来自我的UITableViewController子类的代码,对我有用[使用XCode 6.4,iOS 8.4进行测试],请参阅http://www.elicere.com/mobile/swift-blog-2-uitableview-section-header-color/
- override func tableView(tableView: UITableView,willDisplayHeaderView view: UIView,forSection section: Int) {
- let header = view as? UITableViewHeaderFooterView //recast your view as a UITableViewHeaderFooterView
- if (header == nil) {
- return;
- }
- if (myHeaderFont != nil) {
- header!.textLabel.font = myHeaderFont;
- }
- }
标题高度需要“手动”调整:
- override func tableView(tableView: UITableView,heightForHeaderInSection section: Int) -> CGFloat {
- if (myHeaderFont == nil) {
- return 20; //DEFAULT_HEADER_HEIGHT_IN_POINTS;
- }
- return myHeaderFont.pointSize * 2; //HEIGHT_REL_TO_FONT;
}
其余的是标准的,但在这里显示完整性:
- override func viewDidLoad() {
- //...
- //https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewHeaderFooterView_class/index.html#//apple_ref/doc/uid/TP40012241
- self.tableView.registerClass(UITableViewHeaderFooterView.self,forHeaderFooterViewReuseIdentifier: "HEADER_REUSE_ID")
- //...
- }
- override func tableView(tableView: UITableView,viewForHeaderInSection section: Int) -> UIView? {
- var header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("HEADER_REUSE_ID") as? UITableViewHeaderFooterView;
- if (header == nil) {
- header = UITableViewHeaderFooterView(reuseIdentifier: "HEADER_REUSE_ID");
- }
- header!.textLabel.text = myTitle;
- return header!;
- }