2014-12-03 21 views
0

我正在開發一個針對iOS> = 7的Xcode 6.1中的Swift應用程序,因爲它沒有解決,所以無法使用NSStringDrawingUsesLineFragmentOrigin。我用Google搜索了它,但我找到的所有例子都是使用它的,顯然沒有問題。目前蘋果網站上的文檔顯示它是有效的。有沒有人遇到/解決了同樣的問題?NSStringDrawingUsesLineFragmentOrigin無法解析?

編輯︰ 我已經得到它與NSStringDrawingOptions.UsesLineFragmentOrigin(謝謝馬特),我昨天試過,但它只適用於目標上下文設置爲零。昨天,當我傳遞一個有效的上下文時,我在「選項」中傳遞的任何內容都顯示爲未解決。奇怪的是,今天如果我傳遞一個有效的上下文,編譯器會給我一個不同的錯誤 - 「我的字體屬性上的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 

,我得到「利用未解決標識符」。

+1

你得到了什麼錯誤,完全可以發佈一個小的完整複製?我剛剛在Playground中輸入了一些代碼,可以很好地編譯它。然後我將它粘貼到我正在開發的實際應用程序中,並且它仍然編譯並鏈接正常。但我有點在黑暗中磕磕絆絆,除非你能告訴我什麼是你的失敗...... – 2014-12-04 08:04:06

+0

我會[報告](https://bugreport.apple.com)誤導性的錯誤信息作爲編譯器錯誤。 Swift中有很多特定的類型,其中一個不正確的參數值導致一個錯誤,這個錯誤表面上與另一個非常好的參數有關。 (另外,如果你現在已經解決了你的問題,你應該把它作爲你自己問題的答案並接受它。) – 2014-12-05 10:39:44

回答

3

我剛剛解僱了的Xcode 6.1,創造了雨燕的iOS項目與iOS 7.0的部署目標,並粘貼下面的代碼到我的應用程序的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也工作得很好。