swift中的枚举使用问题

在OC中,当遇到可以进行位运算的枚举值时,可以使用|(或运算符组合多个枚举值) 比如这种类型NSStringDrawingOptions

typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) {
NSStringDrawingUsesLineFragmentOrigin = 1 << 0, 
NSStringDrawingUsesFontLeading = 1 << 1, 
NSStringDrawingUsesDeviceMetrics = 1 << 3, 
NSStringDrawingTruncatesLastVisibleLine NS_ENUM_AVAILABLE(10_5, 6_0) = 1 << 5} 

使用注意

[具有位操作的枚举类型才能够进行多值的组合,不是进行位运算的枚举不能]

我们在OC中使用NSStringDrawingOptions时候常做得一个操作是

 NSStringDrawingOptions options =  NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;  
 CGSize  NameSize =[text boundingRectWithSize:maxsize options: options attributes:@{NSFontAttributeName : [UIConstants getFont:fontsize]} context:nil].size;

但是如果使用同样的方法在swift中写,就会报错

  报错写法:let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

原因:swift暂时不支持这种写法

解决方法#

在OC中定义这个方法,然后在swift的调用这个方法

具体实现##

第一步#####

创建一个.h和.m的普通文件 ---UIConstants.h
声明并实现方法

+(NSStringDrawingOptions )getDrawingOptions
   {
       return NSStringDrawingUsesLineFragmentOrigin |
              NSStringDrawingUsesFontLeading;
   }
第二步#####

在swift的桥接文件LzbTest -Bridging-Header.h中导入创建文件的.h文件 #import "UIConstants.h"

第三步#####

在swift文件中调用

 let options : NSStringDrawingOptions = UIConstants.getDrawingOptions()

就可以解决问题,其他枚举使用类似。

你可能感兴趣的:(swift中的枚举使用问题)