web-dev-qa-db-ja.com

iOS7スタイルで「viewForHeaderInSection」を実装する方法は?

(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionのようなiOS7スタイルで(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)sectionを実装する方法は?

追伸ヘッダーのUITableViewのタイトルの色を変更して、スタイルを保存するだけです。

22
Dmitry

ヘッダーとフッターの両方のグローバルカラーを変更する必要がある場合は、appearanceを使用します。

[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setTextColor:[UIColor redColor]];
8
onegray

View Controllerのライフサイクルの初期(例:-viewDidLoad)、クラスを登録します。

 [[self tableView] registerClass:[UITableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"headerFooterReuseIdentifier"];

次に、メソッドで:(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionセルを両端キューし、好きなようにスタイルを設定して返します。

 UIColor *titleColor = ... // Your color here.
 UITableViewHeaderFooterView *headerFoorterView = [[self tableView] dequeueReusableHeaderFooterViewWithIdentifier:@"headerFooterReuseIdentifier"];
 [[headerFooterView textLabel] setTextColor:titleColor];
 return headerFooterView;

そして、それがデフォルトの実装を使用する方法です。

6
isaac

完璧ではありませんが解決策:

- (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;
}
3
Dmitry

また、@ 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])
    }
}
1
Jeff Collier

IOS 6とまったく同じように機能します。ビュー(またはヘッダー全体をカバーするラベル)を作成し、要件に従ってスタイルを設定します。

0
Mundi