gpt4 book ai didi

swift - 如何将多个枚举值作为函数参数传递

转载 作者:行者123 更新时间:2023-11-30 13:25:17 28 4
gpt4 key购买 nike

我将如何执行以下操作 - 在 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]
<小时/>

编辑:问题 has been resolved in iOS 8.3 SDK Beta 1 (12F5027d) :

Modified NSStringDrawingOptions [struct]

  • From: enum NSStringDrawingOptions : Int
  • To: struct NSStringDrawingOptions : RawOptionSetType

您现在可以编写:

let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading
<小时/>

经过一些研究和@Anton Tcholakov 的“评论”:

  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(在当前种子中)中,存在一个错误,其中 NSStringDrawingOptions 被移植到 Swift 作为 enum : Int,而不是结构:RawOptionSet。您应该向 Apple 发送错误报告来描述这一严重问题。

关于swift - 如何将多个枚举值作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288531/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com