iOS -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 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,289评论 3 25
  • 这几天我的心情都不是太好,不管是在生活还是现在工作上,都会觉得烦躁不安,好像一切都不是向着自己想的方向前进。我很害...
    朝诗慕瑶阅读 211评论 0 0
  • 辛卯年清明时节,与友人赴长城脚下公社一游。旁有崎岖山路可登古长城。山石砺砺,枯草萋萋。登高望远,极目天舒。成诗三首...
    九哥的歌阅读 521评论 0 1
  • 文/魏千洛 财报几百页,怎么能从中找出有价值的好公司? 评判好公司的标准是什么? 这是不是一门好生意? 公司能不能...
    千洛读书阅读 699评论 0 7