2015-06-20 33 views
26

viewDidLoad,我有类似以下内容添加文本属性的UITextFieldNSForegroundColorAttributeName在Swift中不起作用?

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

+9

Udacity的MemeApp! – leopic

回答

52

Technical Q&A QA1531

这是因为NSStrokeWidthAttributeName 的值的符号被解释为模式;它表示属性字符串 是要填充,描边还是两者。具体而言,零值仅显示 ,而正值仅显示笔画。负数 值允许显示填充和描边。

你设置

NSStrokeWidthAttributeName: 1.0 

字体被抚摸,而不是填补,导致“轮廓字体”

左右。你要设置

NSStrokeWidthAttributeName: -1.0 

代替该字体被抚摸填补。

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

的NSNumber包含浮点值,在字体点 大小,默认为0的百分比:无行程;对于脑卒中单独为阳性,对于 脑卒中和填充为阴性(对于空心文本的典型值将为3.0)

+2

哇。有效。我一直在想这件事。 – Ja5onHoffman

0

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

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

我试过了。一样。上面添加的图像显示它的显示方式。 – Ja5onHoffman

相关问题