2012-04-24 10 views
4

スタイルUITableViewStylePlainでUITableViewを実装しました。私は不透明でなければならない堅実な背景色を持つカスタムヘッダービューを使用しています。しかし、ヘッダーは不透明ではなく、ヘッダーの下にスクロールするとセルが表示されたままになります。ヘッダーを不透明にしたいのですが、どうやってこのようにするのか分かりません。不透明なヘッダを持つUITableViewStylePlain

答えて

3

興味がありそうな人にとっては、これに対する解決策は簡単でしたが、明白ではありませんでした。私は働いているものに来る前に別のものを試しました。私はそれが少なくとも1つの他のアプリでそれを見ていたので、それができることが分かっていた。

これらは、tableView:viewForHeaderInSection:デリゲートメソッドによって作成されたカスタムヘッダーを使用します。

動作しませんでした何

1)このデリゲートメソッドで作成された親ビューのbackgroundColorプロパティを設定します。何らかの理由で、カスタムヘッダービューで使用されている場合、この色は無視されます。

2)私は、サブビューが透過的ではないことに気づいたので、親ビューと既存のサブビューの中間に中間のビューを配置しようとしました。私はこのビューの背景色を単色に設定しました。これも無視されました。

働いて何:

3)このコードでbackgroundColorプロパティを設定:何らかの理由で

[UIColor colorWithPatternImage:[UIImage imageNamed:@"anImage.png"]]; 

、シンプルな色ウィルは動作しないが、ない画像から作成した色。

カスタムヘッダービューのレンダリング方法について、誰かがここで何が起こっているのかを説明したい場合に備えて、この質問をもう一度お待ちします。私はこの細かいことについてドキュメントには何も見ませんでしたが、私はそれを見逃しているかもしれません。

1

私は同じ問題を抱えました。問題を解決した解決策は、UITableViewHeaderFooterViewをサブクラス化してからdrawRectをオーバーライドすることでした。

4

テーブルビューがプレーンである場合、セクション内のセルの少なくとも1つが画面上にある場合に表示されます。だから、テーブルビューのようにいくつかのアルファで内部的にヘッダの背景ビューを設定します。しかし、カスタムビューにバックグラウンドビューを設定し、バックグラウンドを設定することができます。

あなたはtableView:viewForHeaderInSection:でカスタムヘッダビューを作成するときは、これを行うことができます:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UITableViewHeaderFooterView *header = ... 
    header.backgroundView = [UIView new]; 
    header.backgroundView.backgroundColor = [UIColor greenColor]; 

    return header; 
} 

それとも、カスタムヘッダービューを作成したくない場合は、おそらくあなたはtableView:willDisplayHeaderView:forSection:モミのバックグラウンドを設定することができますがデフォルトヘッダービュー。

関連する問題