[英]NSForegroundColorAttributeName doesn't work in Swift?
在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 bug吗?
文本被放置在UIScrollView
的图像上。 出现的文字:
来自技术问答QA1531 :
这是因为NSStrokeWidthAttributeName的值的符号被解释为模式; 它指示是否要填充,描边或同时填充属性字符串。 具体而言,零值仅显示填充,而正值仅显示笔划。 负值允许显示填充和描边。
所以你的设置
NSStrokeWidthAttributeName: 1.0
字体仅被描边并且未被填充,从而产生“轮廓字体”。 你想要设置
NSStrokeWidthAttributeName: -1.0
相反,以便字体被抚摸和填充。
如果您在Xcode中按命令单击NSStrokeWidthAttributeName
跳转到定义,也可以找到该信息:
NSNumber包含浮点值,以字体点大小的百分比表示,默认为0:无笔画; 单独使用中风,中风和填充为阴性(轮廓文本的典型值为3.0)
您需要使用文本属性创建NSAttributedString
,然后设置文本字段的attributedText
属性:
textField.attributedText = NSAttributedString(string: "Top text field", attributes: textAttributes)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.