我正在编写一个应用程序,显示表格视图中的项目列表。您可以点按表格视图中的每个项目以获得弹出窗口(通过标准UIAlertController
)以获取有关该项目的更多信息。
我想要包括的一个问题是几个不同规模的评级 - 例如,如果评级是3/5汽车,它会说汽车评级:。但我觉得如果用户知道这是5分的评分会更好,我可以通过添加两个“灰色的”汽车表情符号(即alpha = 0.3)来完成,类似于亚马逊展示的方式4满星星和1颗空星星的星级评分为5星。
然后问题是:是否有任何方法可以将警报中某些文本的alpha值设置为0.3,其余为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
}
简单的演示项目参考:
https://github.com/bharath-dev/StackoverflowSolutions/tree/master/AttributedAlertText