NSStringDrawingUsesLineFragmentOrigin未解决?

时间:2014-12-03 21:27:12

标签: iphone swift

我正在开发一个针对iOS> = 7的Xcode 6.1中的Swift应用程序,并且无法使用NSStringDrawingUsesLineFragmentOrigin,因为它尚未解析。我用谷歌搜索了它,但我找到的只是使用它的例子,显然没有问题。 Apple网站上的当前文档显示它是有效的。有没有人遇到/解决了同样的问题?

编辑: 我已经使用了NSStringDrawingOptions.UsesLineFragmentOrigin(感谢Matt)我昨天尝试过,但它只适用于设置为nil的目标上下文。昨天当我传递一个有效的上下文时,我在“选项”中传递的任何内容都显示为未解析。奇怪的是,今天如果我传递一个有效的上下文,编译器会在我的字体属性上给出一个不同的错误 - “NSString与NSObject不同”!我想知道这是否只是Swift编译器中的一些古怪错误?无论如何,这是最终编译的代码:

    var textStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as NSMutableParagraphStyle
    textStyle.alignment = NSTextAlignment.Left

    let fontAttributes = [
        NSFontAttributeName: UIFont(name: "Georgia", size: tileSize * CLUES_FONT_SCALE)!,
        NSForegroundColorAttributeName: UIColor.blackColor(),
        NSParagraphStyleAttributeName: textStyle
    ]

    size = text.boundingRectWithSize(
        CGSize(width: width, height: 1000),
        options: NSStringDrawingOptions.UsesLineFragmentOrigin,
        attributes: fontAttributes,
        context: nil
    )

请注意,如果我替换:

NSStringDrawingOptions.UsesLineFragmentOrigin

NSStringDrawingUsesLineFragmentOrigin

如Apple文档中所示,我得到“使用未解析的标识符”。

1 个答案:

答案 0 :(得分:3)

我刚刚启动了Xcode 6.1,创建了一个部署目标为iOS 7.0的Swift iOS项目,并将以下代码粘贴到我的应用程序didFinishLaunchingWithOptions中:

let attrib_string = NSAttributedString(string: "Foo")
let rect = attrib_string.boundingRectWithSize(
    CGSize(width: 100, height: 100),
    options: .UsesLineFragmentOrigin,
    context: nil)
println(rect)

编译,链接并运行正常,并将结果打印到控制台:

(0.0,0.0,20.6777,13.8)

您可能需要编辑问题以提供完整的示例,以及您收到的确切错误消息。我看不出任何奇怪的东西;使用NSStringDrawingOptions.UsesLineFragmentOrigin的完全限定枚举值也可以正常工作。

相关问题