快速添加Nsattributed字符串和字符串

时间:2019-05-29 08:49:38

标签: ios swift tableview nsattributedstring

我拥有动态数据,我将该数据加载到表视图中,但是这些数据混合了属性字符串和普通字符串。

在这里,我得到的名称为“在此处点击”,我想用蓝色将字符串放大,然后选择需要打开网址的字符串。

我编写了以下代码,但它给出了错误。

  

二进制运算符'+'不能应用于类型为'String'的操作数,并且   'NSMutableAttributedString'

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "WhatisrewardsTableViewCell", for: indexPath)as! WhatisrewardsTableViewCell
        cell.imageview.image = images[indexPath.section][indexPath.row]
        cell.titlelbl.text = tilenames[indexPath.section][indexPath.row]
        cell.desclbl.text = descriptions[indexPath.section][indexPath.row]

        let value = " here.".withTextColor(UIColor.disSatifyclr)

        if (cell.desclbl.text?.contains("tap"))!{
           // cell.desclbl.text?.attributedString
            cell.desclbl.text = descriptions[indexPath.section][indexPath.row] + value
        }

        cell.desclbl.addLineSpacing()
        return cell
    }

2 个答案:

答案 0 :(得分:0)

  

您不能混合使用属性字符串和普通字符串。   下面的代码用于在标签中添加可点击链接,您可以添加其他属性,例如颜色。

let attributedString = NSMutableAttributedString(string: "tap here")
attributedString.addAttribute(.link, value: "https://www.google.com", range: NSRange(location: 1, length: 3))
lbl.attributedText = attributedString

答案 1 :(得分:0)

您不能将NSAttributedString附加到String对象。我建议您生成一个普通的String,然后向其中添加属性参数。

func prepareURLString() -> NSMutableAttributedString {

        let masterString = "To navigate to google Tap Here."

        let formattedString = NSMutableAttributedString(string: masterString)

        let formattedStringAttribute = [
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular),
            NSAttributedString.Key.foregroundColor: UIColor(red: 51.0/255.0, green: 51.0/255.0, blue: 51.0/255.0, alpha: 1),
            ] as [NSAttributedString.Key : Any]

        let privacyPolicyAttribute = [
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .bold),
            NSAttributedString.Key.foregroundColor: UIColor.blue,
            NSAttributedString.Key.underlineStyle: 1,
            NSAttributedString.Key.link: URL(string: "https://www.google.com")!
            ] as [NSAttributedString.Key : Any]

        formattedString.addAttributes(formattedStringAttribute, range: NSMakeRange(0, formattedString.length))

        let privacyPolicyRange = (masterString as NSString).range(of: "Tap Here")
        formattedString.addAttributes(privacyPolicyAttribute, range: privacyPolicyRange)

        return formattedString
    }

此函数将返回一个属性字符串,您可以根据需要使用它。使用tableview,您可以传递一些参数并修改单元格的属性字符串。我在“点击此处”后面添加了一个google链接,其显示如下所示的输出:

enter image description here

希望我的问题正确无误,这在某种程度上可以为您提供帮助。