在Objective-C中,enum是可以多選的:NSString*string=@"一段文字";CGRectboundingRect=[stringboundingRectWithSize:CGSizeMake(label.frame.width,CGFloat.max)options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:attributescontext:nil];Swift中的option型別Swift的enum不支援多選,所以能夠多選的option型別應該用struct:RawOptionSet來實現。要自己實現options型別,可以參考StackOverflow上的答案,官方的SDK正是採取這種方法移植的。letoptions:NSStringDrawingOptions=.UsesLineFragmentOrigin|.UsesFontLeadingletboundingRect=string.bridgeToObjectiveC().boundingRectWithSize(CGSizeMake(label.frame.width,CGFloat.max),options:options,attributes:attributes,context:nil)iOSSDK的Bug開發者直接在OSX10.10中這樣寫即可,但在目前版本的iOS8SDK中,這樣的寫法卻是編譯通不過。這是因為在iOS8的SDK裡,NSStringDrawingOptions被移植為了enum:Int,而不是struct:RawOptionSet。如何解決這個問題呢?只能借用下Objective-C來workaround。
在Objective-C中,enum是可以多選的:NSString*string=@"一段文字";CGRectboundingRect=[stringboundingRectWithSize:CGSizeMake(label.frame.width,CGFloat.max)options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:attributescontext:nil];Swift中的option型別Swift的enum不支援多選,所以能夠多選的option型別應該用struct:RawOptionSet來實現。要自己實現options型別,可以參考StackOverflow上的答案,官方的SDK正是採取這種方法移植的。letoptions:NSStringDrawingOptions=.UsesLineFragmentOrigin|.UsesFontLeadingletboundingRect=string.bridgeToObjectiveC().boundingRectWithSize(CGSizeMake(label.frame.width,CGFloat.max),options:options,attributes:attributes,context:nil)iOSSDK的Bug開發者直接在OSX10.10中這樣寫即可,但在目前版本的iOS8SDK中,這樣的寫法卻是編譯通不過。這是因為在iOS8的SDK裡,NSStringDrawingOptions被移植為了enum:Int,而不是struct:RawOptionSet。如何解決這個問題呢?只能借用下Objective-C來workaround。