我该怎么做-在swift中传递两个NSStringDrawing选项作为函数参数:
CGRect boundingRect = [string boundingRectWithSize:CGSizeMake(280.0, NSIntegerMax) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:options context:nil];
编辑:在 Swift 3.0中 :
let options: NSStringDrawingOptions = [.usesLineFragmentOrigin, .usesFontLeading]
编辑: 这就是您将在Swift 2.0中使用选项枚举的方式 :
let options: NSStringDrawingOptions = [.UsesLineFragmentOrigin, .UsesFontLeading]
编辑: 此问题 已在iOS 8.3 SDK Beta 1(12F5027d)中得到解决:
修改后的NSStringDrawingOptions[struct] 从: enum NSStringDrawingOptions : Int 至: struct NSStringDrawingOptions : RawOptionSetType
修改后的NSStringDrawingOptions[struct]
NSStringDrawingOptions
enum NSStringDrawingOptions : Int
struct NSStringDrawingOptions : RawOptionSetType
您现在可以编写:
let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading
经过一番研究和@Anton Tcholakov的“评论”:
如果您以OS X 10.10为目标,这是这样做的简单方法:
let size = CGSize(width: 280, height: Int.max)
let boundingRect = string.bridgeToObjectiveC().boundingRectWithSize(size, options: options, attributes: attributes, context: nil)
但是,在iOS 8 SDK(在当前种子中)中,存在一个错误,该错误NSStringDrawingOptions将移植为Swift enum : Int而不是struct : RawOptionSet。您应该向Apple发送错误报告,说明此严重问题。
enum : Int
struct : RawOptionSet