NSLineBreakMode 枚举和向后兼容性



我需要我的应用程序支持 iOS 5+。由于以前的iOS 6中换行UILabel模式的枚举lineBreakModeUILineBreakMode类型,并且对于iOS 6 +属于NSLineBreakMode类型,检查当前运行的iOS版本以确定要使用的类型的最佳(或更正确)方法应该是什么?直接做[[UIDevice currentDevice] systemVersion]这样的事情是正确的,还是有更好的方法?

谢谢!

运行时不需要

检查 iOS 版本,枚举值相同,从 UILineBreakMode 移动到 NSLineBreakMode 时编译的代码不会更改

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;
}

最新更新