在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
的图片上。出现的文字:
答案 0 :(得分:53)
这是因为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)