问题在Objective-C中,enum是可以多选的。如:NSString*string=@"一段文字";CGRectboundingRect=[stringboundingRectWithSize:CGSizeMake(label.frame.width,CGFloat.max)选项:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:attributescontext:nil];使用|或者两个枚举值,可以实现多选的效果。现在的问题是:如何在swift中实现同样的效果?Swift中的option类型swiftenum不支持多选,所以可以多选的option类型要用struct:RawOptionSet来实现。要自己实现选项类型,您可以参考这个答案。官方SDK就是这样移植的。上面例子中代码的正确写法,swift中正确的写法如下:max),options:options,attributes:attributes,context:nil)在OSX10.10中可以这样写。iOSSDK的一个bug,但是在当前版本的iOS8SDK中,这种写法无法通过编译。这是在iOS8SDK中,NSStringDrawingOptions被移植到enum:Int而不是struct:RawOptionSet。如何解决这个问题呢?我只能使用OC来解决问题。解决方案因为使用的选项是一样的,所以我就简单的写了这个类:;}@end在Bridging-Header.h中添加:#import"OCUtils.h"在swift文件中使用.stringDrawingOptions(),attributes:attributes,context:nil)如果有进一步的需求,可以改成更通用的。总的原则只能是这样。本文参考:Howtopassmultipleenumvaluesasafunctionparameter原文:Swift的坑:如何实现enum的多选
