【问题标题】:drawInRect text alignment using Swift使用 Swift 的 drawInRect 文本对齐
【发布时间】:2016-04-14 14:36:04
【问题描述】:

我试图在图像顶部放置一些文本,该图像将位于图像顶部的 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 编写云的解决方案。

【问题讨论】:

    标签: ios swift cgrect


    【解决方案1】:

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

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

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.alignment = .Center
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-31
        • 2022-01-06
        • 1970-01-01
        • 2015-03-25
        • 2014-08-10
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        相关资源
        最近更新 更多