NSLineBreakMode枚举和向后兼容性
我需要我的应用程序来支持iOS 5 +。 由于之前的iOS 6中, UILabel
中的UILineBreakMode
是UILineBreakMode
types的,并且它是iOS 6+的NSLineBreakMode
types,所以应该最好(或更正确)检查当前运行的iOS版本以确定types被使用? 直接做[[UIDevice currentDevice] systemVersion]
是否正确,还是有更好的方法?
谢谢!
您不需要在运行时检查iOS版本,枚举值是相同的,从UILineBreakMode
移动到UILineBreakMode
时编译的代码将不会更改
enum { NSLineBreakByWordWrapping = 0, NSLineBreakByCharWrapping, NSLineBreakByClipping, NSLineBreakByTruncatingHead, NSLineBreakByTruncatingTail, NSLineBreakByTruncatingMiddle }; typedef NSUInteger NSLineBreakMode typedef enum { UILineBreakModeWordWrap = 0, UILineBreakModeCharacterWrap, UILineBreakModeClip, UILineBreakModeHeadTruncation, UILineBreakModeTailTruncation, UILineBreakModeMiddleTruncation, } UILineBreakMode;
如果你想检查操作系统版本,你可以使用这个代码:
+ (NSInteger)OSVersion { static NSUInteger _deviceSystemMajorVersion = -1; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _deviceSystemMajorVersion = [[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue]; }); return _deviceSystemMajorVersion; }
- 如何使用complicationController的sendMessage唤醒iOS父应用程序
- 上传IPA,奇怪的问题:错误ITMS-90032:“无效的图像path – 在键'$ key'下引用的path没有find图像:'$ path'