ios - tableview教學 - uitableview swift




UITableView-更改節標題顏色 (18)

SWIFT 2

我能夠用添加的模糊效果成功更改節背景顏色(這非常酷)。 輕鬆更改節的背景色:

  1. 首先轉到故事板並選擇表格視圖
  2. 轉到屬性檢查器
  3. 項目清單
  4. 向下滾動到查看
  5. 換背景”

然後為了模糊效果,添加到代碼中:

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

}

如何更改UITableView中的節標題的顏色?

編輯 : DJ-S提供的答案應該在iOS 6及以上版本中考慮。 接受的答案已過時。


iOS 8+

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        tableView.tableHeaderView?.backgroundColor = UIColor.blue()
}

以下是如何在標題視圖中添加圖像的方法:

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

以下是如何更改文字顏色。

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以來,此解決方案效果很好。


使用RubyMotion / RedPotion,將其粘貼到您的TableScreen中:

  def tableView(_, willDisplayHeaderView: view, forSection: section)
    view.textLabel.textColor = rmq.color.your_text_color
    view.contentView.backgroundColor = rmq.color.your_background_color
  end

奇蹟般有效!


只需更改標題視圖圖層的顏色即可

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
  UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0,    tableView.bounds.size.width, 30)] autorelease];
 headerView.layer.backgroundColor = [UIColor clearColor].CGColor
}


在UITableViewHeaderFooterView上設置背景色已被棄用。 請改用contentView.backgroundColor


在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];

基於@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
}

如果有人需要快捷,請保留標題:

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
}

對於iOS8(Beta)和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

}

(因為我在我的項目中使用了UITableViewController而不是普通的UIViewController,所以“覆蓋”是存在的,但是它並不是強制更改節頭文件的顏色)

你的頭文本仍然可以看到。 請注意,您需要調整節頭高度。

祝你好運。


您可以在2秒內在main.storyboard上執行此操作。

  1. 選擇表格視圖
  2. 轉到屬性檢查器
  3. 項目清單
  4. 向下滾動到查看副標題
  5. 換背景”


我知道它的答案,以防萬一,在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
    }

我通過控制台日誌從Xcode收到消息

[TableView]在UITableViewHeaderFooterView上設置背景顏色已被棄用。 請使用所需的背景色將自定義UIView設置為backgroundView屬性。

然後我創建一個新的UIView,並將其作為HeaderView的背景。 不是一個好的解決方案,但Xcode說,這很容易。


設置截面區域的背景和文本顏色:(感謝William JockuschDj 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]];
    }
}

雖然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


希望這個來自UITableViewDelegate協議的方法能讓你開始:

Objective-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年更新:

Swift 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替換[UIColor redColor] 。 你也可能希望調整headerView的尺寸。







cocoa-touch