NSLineBreakMode枚举和向后兼容性

时间:2013-10-29 07:45:22

标签: ios ios5 ios6 uilabel line-breaks

我需要我的应用来支持iOS 5+。从之前的iOS 6开始,lineBreakMode中的换行模式的枚举UILabel属于UILineBreakMode类型,而对于iOS 6+,它的类型为NSLineBreakMode,应该是最好的(或更正确)检查当前运行的iOS版本以确定要使用的类型的方法?直接做[[UIDevice currentDevice] systemVersion]之类的事情是对的,还是有更好的方法?

谢谢!

2 个答案:

答案 0 :(得分:1)

您无需在运行时检查iOS版本,枚举值相同,从UILineBreakMode移动到NSLineBreakMode

时,编译后的代码不会更改
enum {

NSLineBreakByWordWrapping = 0,
   NSLineBreakByCharWrapping,
   NSLineBreakByClipping,
   NSLineBreakByTruncatingHead,
   NSLineBreakByTruncatingTail,
   NSLineBreakByTruncatingMiddle
};
typedef NSUInteger NSLineBreakMode


typedef enum {
   UILineBreakModeWordWrap = 0,
   UILineBreakModeCharacterWrap,
   UILineBreakModeClip,
   UILineBreakModeHeadTruncation,
   UILineBreakModeTailTruncation,
   UILineBreakModeMiddleTruncation,
} UILineBreakMode;

答案 1 :(得分:0)

如果您想检查操作系统版本,可以使用以下代码:

+ (NSInteger)OSVersion
{
    static NSUInteger _deviceSystemMajorVersion = -1;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _deviceSystemMajorVersion = [[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue];
    });
    return _deviceSystemMajorVersion;
}