如何设置UITableViewCell的配件颜色?

时间:2010-11-26 03:39:55

标签: iphone ios

我想将配件视图图标设置为白色,类似于图标在黑色TabBar中自动着色为白色,但对我来说,如何做到这一点并不是很明显。有没有人有这方面的经验?

10 个答案:

答案 0 :(得分:77)

实际上正确的答案(尽管已经太晚了)是将你的单元格tintColor属性设置为白色UIColor对象,如下所示:

UITableViewCell *cell = [UITableViewCell new]; // or other instantiation...
[cell setTintColor:[UIColor whiteColor]];

也可以完全对附件视图进行子类化,但问题是要求将单元附件按钮设置为白色,因此这应该是正确答案(至少对于iOS7而言)。

注意:已更正的属性名称,另请注意,它实际上不适用于指示器附件类型

答案 1 :(得分:10)

最好的办法是制作一张想放在那里的图像,然后将附件视图设置为该图像。这是Apple's Official Documentation for UITableViewCells

答案 2 :(得分:6)

为表视图设置色调颜色可以解决它。

答案 3 :(得分:4)

UIImageView *checkmark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"coloredCheckmark.png"]];
cell.accessoryView = checkmark;`

享受

答案 4 :(得分:2)

Swift 3.0

两种方式:

  1. 使用您自己的UIImageView作为tableview单元格的accessoryView
  2. 如果您使用的是系统附件类型,例如Disclosure Indicator箭头图标(>),则可以更改UIImageView tintColor来实现它。如下所示:

    cell?.subviews.forEach({
            if let btn = $0 as? UIButton {
                btn.subviews.forEach({
                    if let imageView = $0 as? UIImageView {
                        let image = imageView.image?.withRenderingMode(.alwaysTemplate)
                        imageView.image = image
                        imageView.tintColor = UIColor.red
                    }
                })
            }
        })
    

答案 5 :(得分:2)

结合@ BharathRao,@ Hemang和@Kiattisak Anoochitarom想法的解决方案

这似乎是一个问题,特别是在iOS 13以上版本(更改tintColor并没有影响)上,此页面在Apple开发者论坛上有2000多个视图 (https://forums.developer.apple.com/thread/121472

我使用@BharathRao和@Hemang的想法的解决方案是将扩展名添加到UITableViewCell中,例如:addDisclosureIndicator

使用扩展程序可使应用程序中的内容更加统一,特别是在有多个表和情节提要的情况下。

extension UITableViewCell {
       func addDisclosureIndicator(){
          let button = UIButton(frame: CGRect(x: 0, y: 0, width: 15, height: 15))
    /// 15 look great for me in iPhone and iPad
           button.setImage( UIImage(named: "rightArrow"), for: .normal) 
        ///You can download a chevron of your choice online
           button.tintColor = UIColor(yourPreferredColor)
           self.accessoryView = button

   }
 }

致电

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
        cell.addDisclosureIndicator()

        return cell
    }

希望这会有所帮助。

答案 6 :(得分:0)

如果您在附件视图中使用自定义图片/按钮,则需要更改按钮的色调颜色,例如

keyedLookupList.Add(keySelector(item), item);

答案 7 :(得分:0)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCellIdentifier", for: indexPath) as? MyCustomCell else { return UITableViewCell() }
    cell.tintColor = UIColor.white //Important
    cell.accessoryType = (someCondition) ? .checkmark : .none
    return cell
}

答案 8 :(得分:0)

最简单的方法是“根据图片自己创建配件”,然后使用模板颜色选项更改其颜色,或者仅使用具有所需颜色的图片。

答案 9 :(得分:-1)

在您的自定义单元格类

override func awakeFromNib() {
   super.awakeFromNib()
   tintColor = UIColor.red
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellModel = addressCellModels[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier:cellModel.cellIdentifier, for: indexPath) as! AddressSelectionCell
    cell.tintColor = UIColor.red
    return cell
}