使用Swift绘制drawInRect文本对齐方式

时间:2016-04-14 14:36:05

标签: ios 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)

问题在于文本对齐方式。当我这样写时,我收到一个错误:

  

如果没有更多的上下文,表达的类型是不明确的

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

  

无法将'NSTextAlignment.Type'类型的值转换为预期的字典键类型'String'

我理解。我研究了两个小时,并没有找到任何最新的解决方案而不是单一的云如何使用Swift写这个。

2 个答案:

答案 0 :(得分:3)

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

而不是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
            ]