답변:
UITableViewDelegate
프로토콜 에서이 방법을 사용 하면 시작할 수 있기를 바랍니다 .
목표 -C :
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
if (section == integerRepresentingYourSectionOfInterest)
[headerView setBackgroundColor:[UIColor redColor]];
else
[headerView setBackgroundColor:[UIColor clearColor]];
return headerView;
}
빠른:
func tableView(_ tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView!
{
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
if (section == integerRepresentingYourSectionOfInterest) {
headerView.backgroundColor = UIColor.redColor()
} else {
headerView.backgroundColor = UIColor.clearColor()
}
return headerView
}
2017 년 업데이트 :
스위프트 3 :
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
if (section == integerRepresentingYourSectionOfInterest) {
headerView.backgroundColor = UIColor.red
} else {
headerView.backgroundColor = UIColor.clear
}
return headerView
}
교체 [UIColor redColor]
중과 UIColor
당신이 좋아하는 것입니다. 치수를 조정할 수도 있습니다 headerView
.
[UIColor xxxColor]
내가 그렇게를 사용하여 내가 포토샵 (에서 얻을 수있는 것과 같은 사용자 정의 색상을하려고 할 때하지만 UIColor red:green:blue:alpha:
, 그냥 흰색입니다 오전 내가 뭔가 잘못된 일입니다.?
이것은 오래된 질문이지만 대답을 업데이트해야한다고 생각합니다.
이 방법에는 사용자 정의보기를 정의하고 작성하는 것이 포함되지 않습니다. iOS 6 이상에서는 다음을 정의하여 배경색과 텍스트 색을 쉽게 변경할 수 있습니다.
-(void)tableView:(UITableView *)tableView
willDisplayHeaderView:(UIView *)view
forSection:(NSInteger)section
섹션 위임 방법
예를 들면 다음과 같습니다.
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
// Background color
view.tintColor = [UIColor blackColor];
// Text Color
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
[header.textLabel setTextColor:[UIColor whiteColor]];
// Another way to set the background color
// Note: does not preserve gradient effect of original header
// header.contentView.backgroundColor = [UIColor blackColor];
}
내 게시물에서 가져온 것 : https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/
스위프트 3/4
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
view.tintColor = UIColor.red
let header = view as! UITableViewHeaderFooterView
header.textLabel?.textColor = UIColor.white
}
header.contentView.backgroundColor = [UIColor blackColor];
텍스트 색상을 변경하는 방법은 다음과 같습니다.
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)] autorelease];
label.text = @"Section Header Text Here";
label.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.75];
label.backgroundColor = [UIColor clearColor];
[headerView addSubview:label];
사용자 정의 색상의 헤더를 원할 경우이 작업을 수행 할 수 있습니다.
[[UITableViewHeaderFooterView appearance] setTintColor:[UIColor redColor]];
이 솔루션은 iOS 6.0부터 훌륭하게 작동합니다.
다음 솔루션은 iOS 8 이상이 설치된 Swift 1.2에서 작동합니다
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// This changes the header background
view.tintColor = UIColor.blueColor()
// Gets the header view as a UITableViewHeaderFooterView and changes the text colour
var headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
headerView.textLabel.textColor = UIColor.redColor()
}
커스텀 뷰를 생성하지 않으려면 다음과 같이 색상을 변경할 수도 있습니다 (iOS 6 필요).
-(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
UIView* content = castView.contentView;
UIColor* color = [UIColor colorWithWhite:0.85 alpha:1.]; // substitute your color here
content.backgroundColor = color;
}
}
섹션 영역의 배경 및 텍스트 색상을 설정합니다 (덕분에 William Jockusch
와 Dj S
)
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
castView.contentView.backgroundColor = [UIColor grayColor];
[castView.textLabel setTextColor:[UIColor grayColor]];
}
}
스위프트 4
UITableView 섹션의 헤더보기에 대한 배경색 , 텍스트 레이블 색 및 글꼴 을 변경하려면 다음 willDisplayHeaderView
과 같이 테이블보기 를 대체 하십시오.
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
header.backgroundView?.backgroundColor = .white
header.textLabel?.textColor = .black
header.textLabel?.font = UIFont(name: "Helvetica-Bold", size: 14)
}
이것은 나를 위해 완벽하게 작동했습니다. 그것이 당신에게도 도움이되기를 바랍니다!
헤더보기에서 이미지를 추가하는 방법은 다음과 같습니다.
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
UIImageView *headerImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"top-gery-bar.png"]] autorelease];
headerImage.frame = CGRectMake(0, 0, tableView.bounds.size.width, 30);
[headerView addSubview:headerImage];
return headerView;
}
iOS8 (베타) 및 Swift의 경우 원하는 RGB 색상을 선택하고 다음을 시도하십시오.
override func tableView(tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView! {
var header :UITableViewHeaderFooterView = UITableViewHeaderFooterView()
header.contentView.backgroundColor = UIColor(red: 254.0/255.0, green: 190.0/255.0, blue: 127.0/255.0, alpha: 1)
return header
}
( "오버라이드"는 프로젝트에서 일반 UIViewController 대신 UITableViewController를 사용하기 때문에 존재하지만 섹션 헤더 색상을 변경하는 데 필수는 아닙니다)
헤더의 텍스트는 계속 표시됩니다. 섹션 헤더 높이를 조정해야합니다.
행운을 빕니다.
스위프트 2
흐림 효과를 추가하여 섹션 배경색을 성공적으로 변경할 수있었습니다 (정말 멋지다). 섹션의 배경색을 쉽게 변경하려면 :
그런 다음 흐림 효과를 위해 코드에 추가하십시오.
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// This is the blur effect
let blurEffect = UIBlurEffect(style: .Light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
// Gets the header view as a UITableViewHeaderFooterView and changes the text colour and adds above blur effect
let headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
headerView.textLabel!.textColor = UIColor.darkGrayColor()
headerView.textLabel!.font = UIFont(name: "HelveticaNeue-Light", size: 13)
headerView.tintColor = .groupTableViewBackgroundColor()
headerView.backgroundView = blurEffectView
}
Swift에서 다음을 사용하는 경우를 대비하여 답변을 알고 있습니다.
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let tableViewWidth = self.tableView.bounds
let headerView = UIView(frame: CGRectMake(0, 0, tableViewWidth.size.width, self.tableView.sectionHeaderHeight))
headerView.backgroundColor = UIColor.greenColor()
return headerView
}
@Dj S 답변을 기반으로 Swift 3을 사용합니다. 이것은 iOS 10에서 훌륭하게 작동합니다.
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// Background color
view.tintColor = UIColor.black
// Text Color
let headerView = view as! UITableViewHeaderFooterView
headerView.textLabel?.textColor = UIColor.white
}
iOS 7.x에서 정적 테이블 뷰 셀을 사용하는 프로젝트가 있습니다. willDisplayHeaderView가 실행되지 않습니다. 그러나이 방법은 정상적으로 작동합니다.
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
NSLog(@"%s", __FUNCTION__);
CGRect headerFrame = CGRectMake(x, y, w, h);
UIView *headerView = [[UIView alloc] initWithFrame:headerFrame];
headerView.backgroundColor = [UIColor blackColor];
-(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view
forSection:(NSInteger)section
{
if ([view isKindOfClass: [UITableViewHeaderFooterView class]])
{
UITableViewHeaderFooterView *castView = (UITableViewHeaderFooterView *) view;
UIView *content = castView.contentView;
UIColor *color = [UIColor whiteColor]; // substitute your color here
content.backgroundColor = color;
[castView.textLabel setTextColor:[UIColor blackColor]];
}
}
이 코드는 그렇게 나쁘지 않다고 생각합니다.
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier(MyHeaderView.reuseIdentifier) as MyHeaderView
let backgroundView = UIView()
backgroundView.backgroundColor = UIColor.whiteColor()
headerView.backgroundView = backgroundView
headerView.textLabel.text = "hello"
return headerView
}
스위프트 4는 매우 쉽습니다. 이것을 수업에 추가하고 필요에 따라 색상을 설정하십시오.
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.backgroundColor = UIColor(red: 0.094, green: 0.239, blue: 0.424, alpha: 1.0)
}
아니면 단순한 색이라면
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.backgroundColor = UIColor.white
}
스위프트 5 업데이트
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.tintColor = UIColor(red: 0.094, green: 0.239, blue: 0.424, alpha: 1.0)
}
아니면 단순한 색이라면
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.tintColor = UIColor.white
}
iOS 7.0.4에서는 자체 XIB로 사용자 정의 헤더를 작성했습니다. 전에는 언급 한 것이 없습니다. 를 사용하려면 UITableViewHeaderFooterView의 하위 클래스 여야했으며 dequeueReusableHeaderFooterViewWithIdentifier:
배경색과 관련하여 클래스가 매우 완고한 것 같습니다. 마지막으로 customBackgroudView라는 이름으로 UIView (코드 또는 IB로 수행 가능)를 추가 한 다음 backgroundColor 속성을 설정했습니다. layoutSubviews에서 : 해당 뷰의 프레임을 경계로 설정했습니다. iOS 7에서 작동하며 결함이 없습니다.
// in MyTableHeaderView.xib drop an UIView at top of the first child of the owner
// first child becomes contentView
// in MyTableHeaderView.h
@property (nonatomic, weak) IBOutlet UIView * customBackgroundView;
// in MyTableHeaderView.m
-(void)layoutSubviews;
{
[super layoutSubviews];
self.customBackgroundView.frame = self.bounds;
}
// if you don't have XIB / use IB, put in the initializer:
-(id)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
...
UIView * customBackgroundView = [[UIView alloc] init];
[self.contentView addSubview:customBackgroundView];
_customBackgroundView = customBackgroundView;
...
}
// in MyTableViewController.m
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
MyTableHeaderView * header = [self.tableView
dequeueReusableHeaderFooterViewWithIdentifier:@"MyTableHeaderView"];
header.customBackgroundView.backgroundColor = [UIColor redColor];
return header;
}
헤더보기의 레이어 색상을 변경하십시오.
-(UIView *) tableView : (UITableView *) tableView viewForHeaderInSection : (NSInteger) 섹션 { UIView * headerView = [[[UIView alloc] initWithFrame : CGRectMake (0, 0, tableView.bounds.size.width, 30)] 자동 릴리스]; headerView.layer.backgroundColor = [UIColor clearColor] .CGColor }
누구든지 신속하게 필요한 경우 제목을 유지하십시오.
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0,y: 0,width: self.tableView.frame.width, height: 30))
view.backgroundColor = UIColor.redColor()
let label = UILabel(frame: CGRect(x: 15,y: 5,width: 200,height: 25))
label.text = self.tableView(tableView, titleForHeaderInSection: section)
view.addSubview(label)
return view
}
제 경우에는 다음과 같이 작동했습니다.
let headerIdentifier = "HeaderIdentifier"
let header = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: headerIdentifier)
header.contentView.backgroundColor = UIColor.white
신속한 5 +
에서 willDisplayHeaderView
방법
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
//For Header Background Color
view.tintColor = .black
// For Header Text Color
let header = view as! UITableHeaderFooterView
header.textLabel?.textColor = .white
}
나는 이것이 당신에게 도움이되기를 바랍니다 :]
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
잘 작동 하지만 다른 델리게이트 메소드를 구현하지 않고도이를 달성 할 수 있습니다. 당신의 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
방법에서는 작동하지 않는 view.contentView.backgroundColor = UIColor.white
대신 사용할 수 있습니다 view.backgroundView?.backgroundColor = UIColor.white
. (나는 이것이 backgroundView
선택적 이라는 것을 알고 있지만 그것이있을 때조차도 구현하지 않고 깨어나지 않습니다.willDisplayHeaderView