繁体   English   中英

NSForegroundColorAttributeName在Swift中不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM