NSForegroundColorAttributeName在Swift中不起作用?

时间:2015-06-20 14:49:17

标签: iphone swift ios8

viewDidLoad中,我有以下内容向UITextField添加文字属性:

let textAttributes = [
    NSForegroundColorAttributeName: UIColor.whiteColor(),
    NSStrokeColorAttributeName: UIColor.blackColor(),
    NSFontAttributeName: UIFont(name: "HelveticaNeue-CondensedBlack", size: 40)!,
    NSStrokeWidthAttributeName: 1.0
]

self.textField.delegate = self
self.textField.defaultTextAttributes = textAttributes
self.textField.text = "Top text field"

NSForegroundColorAttributeName外,所有这些属性似乎都能正常工作。此文字显得透明。这是一个Swift错误吗?

文字放在UIScrollView的图片上。出现的文字:

Screen Shot

2 个答案:

答案 0 :(得分:53)

来自Technical Q&A QA1531

  

这是因为NSStrokeWidthAttributeName的值的符号   被解释为一种模式;它表示是否属于字符串   是被填充,抚摸,或两者兼而有之。具体而言,显示零值   仅填充,而正值仅显示笔划。否定的   值允许显示填充和描边。

所以设置

NSStrokeWidthAttributeName: 1.0

字体仅被描边并且未被填充,从而产生"轮廓字体"。您想要设置

NSStrokeWidthAttributeName: -1.0

,以便字体被描边填充。

如果您点击命令,也可以找到该信息 Xcode中的NSStrokeWidthAttributeName跳转到定义:

  

包含浮点值的NSNumber,以字体点的百分比表示   大小,默认0:无中风;单独中风为阳性,阴性为   笔划和填充(轮廓文本的典型值为3.0)

答案 1 :(得分:0)

您需要使用文本属性创建NSAttributedString,然后设置文本字段的attributedText属性:

textField.attributedText = NSAttributedString(string: "Top text field", attributes: textAttributes)