0

我正在使用 TableView,我希望为所选单元格的文本添加背景颜色。像这样的东西:

图像代表一个单元格,背景颜色是分开的。这是需要的。

在此处输入图像描述 我尝试执行以下操作,但它为整个单元格或仅文本添加了背景颜色。

之间的分隔是最重要的,添加 backgroundColor 会将颜色应用于整个单元格,这是不想要的。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  //Highlighting text - Add saving text
    let cell = tableView.cellForRow(at: indexPath)
    print("You selected cell number: \(indexPath.row)!")
    cell?.textLabel?.textColor = .yellow
    cell?.textLabel?.backgroundColor = .yellow // Is not desired outcome
}
4

4 回答 4

3

您的图像显示textlabel背景yellow颜色和black文本颜色。

如果你想改变背景颜色,它应该是

cell?.textLabel?.backgroundColor = UIColor.yellow

cell?.textLabel?.textColor = UIColor.yellow用于更改文本颜色而不是背景颜色。

https://www.youtube.com/watch?v=DCc5MKKpfUA。这将对您有所帮助)

let searchString = "Lorem Lorem"
 let baseString = "Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum"



let attributed = NSMutableAttributedString(string: baseString)
    do
    {
        let regex = try! NSRegularExpression(pattern: searchString,options: .caseInsensitive)
        for match in regex.matches(in: baseString, options: NSRegularExpression.MatchingOptions(), range: NSRange(location: 0, length: baseString.characters.count)) as [NSTextCheckingResult] {
            attributed.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellow, range: match.range)
        }
        self.txtView.attributedText = attributed
    }
于 2019-07-29T04:38:09.737 回答
1

修改以下代码以根据您的要求使用

 cell?.textLabel?.attributedText = self.decorateText(myTxtOne: "Use this", myTxtTwo: " Code")


func decorateText(myTxtOne:String, myTxtTwo:String)->NSAttributedString{
    let textAttributeOne = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.backgroundColor: UIColor.blue, NSAttributedStringKey.font: UIFont(name: "Poppins-Regular", size: 12.0)!] as [NSAttributedStringKey : Any]
let textAttributeTwo = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.backgroundColor: UIColor.yellow, NSAttributedStringKey.font: UIFont(name: "Poppins-Regular", size: 12.0)!] as [NSAttributedStringKey : Any]

    let textPartOne = NSMutableAttributedString(string: myTxtOne, attributes: textAttributeOne)
    let textPartTwo = NSMutableAttributedString(string: myTxtTwo, attributes: textAttributeTwo)

    let textCombination = NSMutableAttributedString()
    textCombination.append(textPartOne)
    textCombination.append(textPartTwo)
    return textCombination
}
于 2019-07-29T06:26:37.363 回答
0

TheTiger 用户是正确的。您需要学习的只是设置标签的attributedText. 我已经开发了大量具有相同突出经文功能的圣经应用程序。

据我记得,属性名称是:NSBackgroundColorAttributeName. 祝你好运!

于 2019-07-29T05:39:56.670 回答
0

首先,您必须添加一个全局变量来识别选择了哪个单元格。

var selectedIndex = -1

并根据所选行更新值

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {  //Highlighting text - Add saving text
    self.selectedIndex = indexPath.row
    tabeview.reoadData()
}

并将 cellForRow 写为,

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        var cell= (tableView.dequeueReusableCell(withIdentifier: "cellIdentifier") as! YourCell)

        if self.selectedIndex == indexPath.row
        {
           cell?.textLabel?.backgroundColor = UIColor.yellow
        }
        else
        {
            cell?.textLabel?.backgroundColor = UIColor.yellow
        }

       return cell!
    }
于 2019-07-29T04:42:38.727 回答