如何改变单个字母或一个单词的颜色

时间:2016-02-01 22:13:03

标签: ios swift swift2 xcode7

如何在" message"中更改单词的颜色在AlertView中

@@IBAction func btn_instructions(sender: UIButton) {
    let alertView = UNAlertView(title: "MyTitle", message: "Here green text, here red text")
 alertView.show()

如果问题不正确,请抱歉。

2 个答案:

答案 0 :(得分:1)

正如我在上面的评论中所写,UIAlertView已被弃用,因此您必须使用UIAlertController。但是,可以使用(非swifty)键值编码设置消息的属性字符串(因为UIAlertViewNSObject的子类):设置属性键"attributedMessage"的字符串。标题的关联键是"attributedTitle"

但请注意,这些功能似乎 - 据我所知 - 没有Apple记录,只能由用户通过runtime introspection推荐。

以下是一个例子:

import UIKit

class ViewController: UIViewController {

    // ...

    @IBAction func showAlert(sender: UIButton) {

        let alertController = UIAlertController(title: "Foo", message: "", preferredStyle: UIAlertControllerStyle.Alert)

        /* attributed string for alertController message */
        let attributedString = NSMutableAttributedString(string: "Bar Bar Bar!")

        attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(),
            range: NSRange(location:0,length:3))
        attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.greenColor(),
            range: NSRange(location:4,length:3))
        attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blueColor(),
            range: NSRange(location:8,length:3))

        alertController.setValue(attributedString, forKey: "attributedMessage")

        /* action: OK */
        alertController.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alertController, animated: true, completion: nil)
    }
}

产生以下结果:

enter image description here

答案 1 :(得分:0)

UIAlertController无法实现这一点(不推荐使用UIAlertView)。 UIAlertController接受titlemessage参数的可选字符串(请参阅Apple's Documentation on UIAlertController)。

为了在一行文字中使用多种颜色,您需要使用NSAttributedString(这是一个很好的NSAttributedString Tutorial)。

由于String无法保存任何属性,因此您无法在UIAlertController上使用NSAttributedString。您必须使用NSAttributedString标签创建自己的模态ViewController,以显示您要求的内容。