如何执行以下操作?在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]

编辑:This is how you would use the options enum in Swift 2.0:

let options: NSStringDrawingOptions = [.UsesLineFragmentOrigin, .UsesFontLeading]

编辑:The issue 100:

Modified 100 [struct]

  • 起始:enum NSStringDrawingOptions : Int
  • 收件人:struct NSStringDrawingOptions : RawOptionSetType

你现在可以写:

let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

经过一些研究和@Anton Tcholakov的" comments ":

  1. 如果你的目标是OS X 10.10,这是一个简单的方法:

    let size = CGSize(width: 280, height: Int.max)
    let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading
    
    let boundingRect = string.bridgeToObjectiveC().boundingRectWithSize(size, options: options, attributes: attributes, context: nil)
    
  2. 然而,在iOS 8 SDK(在当前的seed中)中,有一个bug,NSStringDrawingOptions被移植到Swift作为enum : Int,而不是struct : RawOptionSet.你应该向苹果发送一份错误报告,描述这个严重的问题.

Swift相关问答推荐

Swift concurrency reload/await,支持只执行成功并重试

减go 用SWIFT struct 填充的NSCountedSet

如何在SWIFT中轻松格式化公制和英制使用的UnitVolume

按变换zoom 在UIView中不起作用

如何使用AsyncTimerSequence获取初始时钟,然后在指定的时间间隔内开始迭代?

如何在SwiftUI的文本视图中显示NSMutableAttributedString?

如何在 Vapor 中制作可选的查询过滤器

如何使用模型在 SwiftUI 的列表中进行搜索

使用变量(而非固定)的字符串分量进行Swift正则表达式

在Swift中如何将NSUrl转换为本地路径URL

Swift UI中视图上的值未更新

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

创建 ViewModel 时 iOS 模拟器上的黑屏

使用列表的下一项更新相同的视图

如何删除桥头而不出错?

如何实现 Swift 的 Comparable 协议?

在 Swift 中,你可以用另一个字符串分割一个字符串,而不仅仅是一个字符吗?

如何以编程方式读取 wkwebview 的控制台日志(log)

<<错误类型>> 奇怪的错误

Swift 2.0 按属性对对象数组进行排序