我正在尝试将一些文本放在图像的顶部,该图像将位于CGRect的中心,该图像将位于该图像的顶部。这是一些代码:
let textColor: UIColor = UIColor.whiteColor()
let textFont: UIFont = UIFont(name: "Helvetica Bold", size: 17
)!
let textAlignment = NSTextAlignment.Center
let textFontAttributes = [
NSFontAttributeName: textFont,
NSForegroundColorAttributeName: textColor,
NSTextAlignment: textAlignment
]
myString.drawInRect(rect, withAttributes: textFontAttributes)
问题在于文本对齐方式。当我这样写时,我收到一个错误:
如果没有更多的上下文,表达的类型是不明确的
当我将键和值类型设置为[String:AnyObject]时,编译器再次抱怨:
无法将'NSTextAlignment.Type'类型的值转换为预期的字典键类型'String'
我理解。我研究了两个小时,并没有找到任何最新的解决方案而不是单一的云如何使用Swift写这个。
答案 0 :(得分:3)
NSTextAlignment
不是有效密钥。请注意其他键如何以Name
结尾。请参阅NSFontAttributeName
和NSForegroundColorAttributeName
的文档,以查看有效密钥列表。
而不是NSTextAlignment
您需要使用NSParagraphStyleAttributeName
,而这需要您创建NSParagraphStyle
的实例。您可以在此处将alignment
设置为.Center
。
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .Center
答案 1 :(得分:1)
文本对齐方式属于段落样式。创建一个NSMutableParagraphStyle
实例,并使用密钥NSParagraphStyleAttributeName
将其传递给属性。
let style = NSMutableParagraphStyle()
style.alignment = .Center
let textFontAttributes = [
NSFontAttributeName: textFont,
NSForegroundColorAttributeName: textColor,
NSParagraphStyleAttributeName: style
]