如何(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
在 iOS7 风格的(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
作品上实现?
PS我只需要更改标题标题的颜色UITableView
并保存它的样式。
如何(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
在 iOS7 风格的(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
作品上实现?
PS我只需要更改标题标题的颜色UITableView
并保存它的样式。
您可以在使用 willDisplayHeaderView 进行渲染之前更改标准 tableview 标头内的标签颜色。也适用于 iOS6/iOS7。
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if([view isKindOfClass:[UITableViewHeaderFooterView class]]){
UITableViewHeaderFooterView *tableViewHeaderFooterView = (UITableViewHeaderFooterView *) view;
tableViewHeaderFooterView.textLabel.textColor = [UIColor blueColor];
}
}
以供参考
UITableViewHeaderFooterView: https ://developer.apple.com/documentation/uikit/uitableviewheaderfooterview
UITableViewDelegate 协议: https ://developer.apple.com/documentation/uikit/uitableviewdelegate/1614905-tableview
如果您需要更改页眉和页脚的全局颜色,请使用appearance
:
[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setTextColor:[UIColor redColor]];
在视图控制器生命周期的早期(例如,-viewDidLoad
),注册类:
[[self tableView] registerClass:[UITableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"headerFooterReuseIdentifier"];
然后,在您的方法中:(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
deque 一个单元格,按照您的意愿设置它的样式,然后返回它:
UIColor *titleColor = ... // Your color here.
UITableViewHeaderFooterView *headerFoorterView = [[self tableView] dequeueReusableHeaderFooterViewWithIdentifier:@"headerFooterReuseIdentifier"];
[[headerFooterView textLabel] setTextColor:titleColor];
return headerFooterView;
这就是您使用默认实现的方式。
不完美但解决方案:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UILabel *label = [[UILabel alloc] init];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
if (<is_iOS7>) {
label.text = [[NSString stringWithFormat:@" %@", <title>] uppercaseString];
} else {
if (<is_iPad>) {
label.text = [NSString stringWithFormat:@" %@", <title>];
} else {
label.text = [NSString stringWithFormat:@" %@", <title>];
}
}
return label;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 38.f;
}
而@aumansoftware 的回答也是将内容添加到标准标题(例如按钮)中的最佳方式。这是 Swift 中的一个示例:
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if (view.isKindOfClass(UITableViewHeaderFooterView)) {
let headerView = view as UITableViewHeaderFooterView
// Label
headerView.textLabel.textColor = UIColor.blueColor()
// New Button
let addPeopleButton: UIButton = UIButton.buttonWithType(.ContactAdd) as UIButton
addPeopleButton.addTarget(self, action: "showPeoplePicker:", forControlEvents: UIControlEvents.TouchUpInside)
addPeopleButton.setTranslatesAutoresizingMaskIntoConstraints(false)
headerView.addSubview(addPeopleButton)
let right: NSLayoutConstraint = NSLayoutConstraint(item: addPeopleButton, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Right, multiplier: 1.0, constant: -12)
let vertical: NSLayoutConstraint = NSLayoutConstraint(item: addPeopleButton, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0)
headerView.addConstraints([right, vertical])
}
}
它的工作方式与 iOS 6 完全相同。创建一个视图(或只是一个覆盖整个标题的标签)并根据您的要求对其进行样式设置。