微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS 8中的UITableViewHeaderFooterView

我有一个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:call时iOS 8的显示方式

如您所见,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!;
      }

原文地址:https://www.jb51.cc/iOS/333944.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐