2015-06-20 379 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