UITableView设置背景颜色

我改变tableView:cellForRowAtIndexPath方法中的UITableViewCells的背景颜色

if(indexPath.row % 2 == 0){ cell.backgroundColor = ... } else{ cell.backgroundColor = ... } 

但是,这只会改变tableView:numberOfRowsInSection中指定的单元格的颜色(如附图所示,前四个之后有白色单元格)

是否可以更改屏幕上显示的所有单元格的颜色?

在这里输入图像说明

如果您希望单元格背景颜色继续交替,则需要说明表格中有多less行。 具体来说,在tableView:numberOfRowsInSection中,您总是需要返回一个填充屏幕的数字,而在tableView:cellForRowAtIndexPath中 ,返回超出表尾的行的空白单元格。 下面的代码演示了如何做到这一点,假设self.dataArray是NSStrings的NSArray。

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if ( self.dataArray.count < 10 ) return( 10 ); else return( self.dataArray.count ); } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleCell"]; if ( indexPath.row % 2 == 0 ) cell.backgroundColor = [UIColor orangeColor]; else cell.backgroundColor = [UIColor redColor]; if ( indexPath.row < self.dataArray.count ) cell.textLabel.text = self.dataArray[indexPath.row]; else cell.textLabel.text = nil; return cell; } 
  1. 打开故事板
  2. select你的UITableView
  3. 打开属性检查器
  4. 滚动到查看组
  5. select整个表格的背景颜色。

在这里输入图像说明

像这样尝试:

 UIColor *yourColor = [UIColor blueColor]; self.tableView.backgroundColor = yourColor ; self.tableView.backgroundView.backgroundColor = yourColor ; 

您需要将tableview的backgroundView设置为nil ,将backgroundColor设置为所需的颜色。

在swift中,你可以改变tableview的背景颜色,或者你可以像这样将图像设置为tableview的背景颜色;

 override func viewDidLoad() { super.viewDidLoad() self.navigationController?.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png")!) self.tableView.backgroundColor = UIColor.clearColor() } // change cell text color and background color override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { cell.backgroundColor = UIColor.clearColor() } 

我用它来在表格视图中replace单元格

 func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { if (indexPath.row % 2 == 0) { cell.backgroundColor = UIColor.grayColor() } else { cell.backgroundColor = UIColor.whiteColor() } } 

对于SWIFT

感谢@Irshad Qureshi,通过在我的cellForRowAtIndexPath中添加以下内容,我能够获得原型单元格的交替背景颜色:

 if (indexPath.row % 2 == 0) { cell!.backgroundColor = UIColor.groupTableViewBackgroundColor() } else { cell!.backgroundColor = UIColor.whiteColor() }