如何更改UITableViewCell的蓝色突出显示颜色?

时间:2010-03-31 14:25:28

标签: ios uitableview

我想知道如何更改UITableViewCell的蓝色突出显示/选择颜色,任何想法?

11 个答案:

答案 0 :(得分:209)

您可以通过多种方式更改高光颜色。

  1. 更改单元格的selectionStyle属性。如果您将其更改为UITableViewCellSelectionStyleGray,则会显示为灰色。

  2. 更改selectedBackgroundView属性。实际上创建蓝色渐变的是一个视图。您可以创建视图并绘制您喜欢的内容,并将视图用作表格视图单元格的背景。

答案 1 :(得分:142)

Zonble已经提供了一个很好的答案。 我认为包含一个简短的代码段可能很有用,可以将UIView添加到将作为所选背景视图显示的tableview单元格。

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    UIView *selectionColor = [[UIView alloc] init];
    selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
    cell.selectedBackgroundView = selectionColor;
  • cell是我的UITableViewCell
  • 我创建了一个UIView,并使用RGB颜色(浅灰色)
  • 设置其背景颜色
  • 然后我将单元格selectedBackgroundView设置为我使用所选背景颜色创建的UIView

这对我很有用。 感谢Zonble提示。

答案 2 :(得分:30)

UITableViewCell有三种默认选择样式: -

  1. 格雷
  2. 实施如下: -

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
    
         [cell setSelectionStyle:UITableViewCellSelectionStyleNone];       
    }
    

答案 3 :(得分:17)

如果要在应用程序范围内更改它,可以将逻辑添加到App Delegate

class AppDelegate: UIResponder, UIApplicationDelegate {

    //... truncated

   func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

        // set up your background color view
        let colorView = UIView()
        colorView.backgroundColor = UIColor.yellowColor()

        // use UITableViewCell.appearance() to configure 
        // the default appearance of all UITableViewCells in your app
        UITableViewCell.appearance().selectedBackgroundView = colorView

        return true
    }

    //... truncated
}

答案 4 :(得分:15)

在Swift中,请在cellForRowAtIndexPath

中使用它
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView

如果您希望每个UITableViewCell的选择颜色相同, 在AppDelegate

中使用此功能
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView

答案 5 :(得分:11)

为了完整性:如果您创建了自己的UITableViewCell子类,则可以实现- (void)setSelected:(BOOL)selected animated:(BOOL)animated方法,并设置您在内容视图中添加的某个视图的背景颜色。 (如果是这种情况)或者contentView本身(如果它没有被你自己的观点覆盖。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    if(selected) {
        self.contentView.backgroundColor = UIColor.blueColor;
    } else {
        self.contentView.backgroundColor = UIColor.whiteColor;
    }
}

(没有使用?来适应源代码DIV的小宽度:)

这种方法比使用selectedBackgroundView有两个优点,它使用的内存更少,CPU使用量更少,除非你显示数百个单元格,否则你甚至不会注意到。

答案 6 :(得分:9)

我必须将选择样式设置为UITableViewCellSelectionStyleDefault才能使用自定义背景颜色。如果是任何其他样式,将忽略自定义背景颜色。在iOS 8上测试。

单元格的完整代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // This is how you change the background color
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
    UIView *bgColorView = [[UIView alloc] init];
    bgColorView.backgroundColor = [UIColor redColor];
    [cell setSelectedBackgroundView:bgColorView];

    return cell;
}

答案 7 :(得分:4)

Swift 3.0 / 4.0

如果您已创建自己的自定义单元格,则可以更改所有单元格的awakeFromNib()上的选择颜色:

 override func awakeFromNib() {
    super.awakeFromNib()

    let colorView = UIView()
    colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)

    self.selectedBackgroundView = colorView


}

答案 8 :(得分:3)

@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
  @IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
    didSet {
      selectedBackgroundView = UIView()
      selectedBackgroundView?.backgroundColor = selectedColor
    }
  }
}

在故事板中,将UITableViewCell的类设置为UIDesignableTableViewCell,在“属性”检查器中,您可以将单元格的选定颜色更改为任何颜色。

您可以将此功能用于所有细胞。 这就是您的属性检查器的外观。

This is how your Attributes inspector will look like

答案 9 :(得分:3)

基于Tooltip,您可以将此扩展名添加到应用程序代码中的任何位置,并直接在情节提要编辑器中为应用程序的每个单元格选择颜色:

// here you receive the response
switch result.response.statusCode {
case 200?:
       if let data = result.data,
          let questionResponse = try? JSONDecoder().decode(QuestionSetResponseModel.self,
                                                                          from: data) {

         // here you can access all the thing
         if let questions = questionResponse.data {
             for question in questions {
                 // here you got your question
                 if let options = question.options {
                    for option in options {
                        // here you get your options
                    }
                 }
             }
         }
  }
default:
       print("status code error")
}

@user's answer

答案 10 :(得分:0)

1-将视图添加到单元格的内容视图中。
2-右键单击您的单元格。
3-将添加的视图设置为“ selectedBackgroundView” enter image description here