drawInRect 文本对齐使用 Swift

drawInRect text alignment using Swift

我正在尝试将一些文本放在图像的顶部,该图像位于 CGRect 的中心,而 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)

问题出在文本对齐上。当我这样写时,我得到一个错误:

Type of expression is ambiguous without more context

当我将键和值类型设置为 [String : AnyObject] 时,编译器再次报错:

Cannot convert value of type 'NSTextAlignment.Type' to expected dictionary key type 'String'

我明白了。我研究了大约两个小时,但没有找到任何最新的解决方案,也没有找到一个如何使用 Swift.

编写云的解决方案

NSTextAlignment 不是有效密钥。请注意其他键如何以 Name 结尾。请参阅 NSFontAttributeNameNSForegroundColorAttributeName 的文档以查看有效密钥列表。

您需要使用 NSParagraphStyleAttributeName 而不是 NSTextAlignment,这需要您创建 NSParagraphStyle 的实例。那就是您将 alignment 设置为 .Center.

的地方
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .Center

文字对齐属于段落样式。创建一个 NSMutableParagraphStyle 实例并将其与密钥 NSParagraphStyleAttributeName 一起传递给属性。

let style = NSMutableParagraphStyle()
style.alignment = .Center
let textFontAttributes = [
            NSFontAttributeName: textFont,
            NSForegroundColorAttributeName: textColor,
            NSParagraphStyleAttributeName: style
            ]