在OC中泽西,當(dāng)遇到可以進(jìn)行位運算的枚舉值時收捣,可以使用|(或運算符組合多個枚舉值)
比如這種類型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}
使用注意
[具有位操作的枚舉類型才能夠進(jìn)行多值的組合,不是進(jìn)行位運算的枚舉不能]
我們在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的調(diào)用這個方法
具體實現(xiàn)##
第一步#####
創(chuàng)建一個.h和.m的普通文件 ---UIConstants.h
聲明并實現(xiàn)方法
+(NSStringDrawingOptions )getDrawingOptions
{
return NSStringDrawingUsesLineFragmentOrigin |
NSStringDrawingUsesFontLeading;
}
第二步#####
在swift的橋接文件LzbTest -Bridging-Header.h
中導(dǎo)入創(chuàng)建文件的.h文件 #import "UIConstants.h"
第三步#####
在swift文件中調(diào)用
let options : NSStringDrawingOptions = UIConstants.getDrawingOptions()
就可以解決問題,其他枚舉使用類似糯俗。