将文本部分设置为不同的Alpha值

时间:2017-10-03 16:33:28

标签: ios objective-c

我正在编写一个应用程序,显示表格视图中的项目列表。您可以点按表格视图中的每个项目以获得弹出窗口(通过标准UIAlertController)以获取有关该项目的更多信息。

我想要包括的一个问题是几个不同规模的评级 - 例如,如果评级是3/5汽车,它会说汽车评级:。但我觉得如果用户知道这是5分的评分会更好,我可以通过添加两个“灰色的”汽车表情符号(即alpha = 0.3)来完成,类似于亚马逊展示的方式4满星星和1颗空星星的星级评分为5星。

然后问题是:是否有任何方法可以将警报中某些文本的alpha值设置为0.3,其余为1(我已经完成了我的研究但找不到任何内容,所以它看起来像没有)?如果没有,任何推荐的解决方法?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想为文字应用不同的Alpha值,可以使用归因文字,如下所示,

不是分配文本值,而是将文本分配给attributedText值,如下例所示,

// MARK: - Different text style in alertController

@IBAction func buttonPressed(_ sender: Any) {
    // Sample attributed text
    let attributedText = applyDifferentStyle(forString: "Hello", inString: "Hello world")

    // Alert controller
    let alertController = UIAlertController(title: "Attributed texts example", message: nil, preferredStyle: .alert)

    // OK button in alert
    let okButton = UIAlertAction(title: "OK", style: .default, handler: nil)
    alertController.addAction(okButton)

    // Assign attributed text
    alertController.setValue(attributedText, forKey: "attributedMessage")

    // Show alert
    present(alertController, animated: true, completion: nil)
}

func applyDifferentStyle(forString: String, inString: String) -> NSMutableAttributedString {
    // Let your color be as follows with the alpha value as you wanted
    let greenColour = UIColor(red: 10/255, green: 190/255, blue: 50/255, alpha: 0.7)
    let redColor = UIColor.red

    // create the attribute as you want
    let customAttribute = [NSAttributedStringKey.foregroundColor : greenColour];

    // Other normal text attribute
    let normalTextAttributes = [NSAttributedStringKey.foregroundColor : redColor]

    let attString:NSMutableAttributedString = NSMutableAttributedString(string: inString
        , attributes: normalTextAttributes)

    // Apply attribute to texts
    let stringRange = (inString as NSString).range(of: forString)
    attString.setAttributes(customAttribute, range: stringRange)

    return attString
}

enter image description here

简单的演示项目参考​​:
https://github.com/bharath-dev/StackoverflowSolutions/tree/master/AttributedAlertText