为什么NSTextAlignment枚举对TARGET_OS_IPHONE的定义不同?

时间:2015-01-27 16:59:22

标签: ios uikit

我只是在UIKit中查看NSText.h并且下面的一些代码引起了我的注意,因为它不常见

/* Values for NSTextAlignment */
typedef NS_ENUM(NSInteger, NSTextAlignment) {
    NSTextAlignmentLeft      = 0,    // Visually left aligned
#if TARGET_OS_IPHONE
    NSTextAlignmentCenter    = 1,    // Visually centered
    NSTextAlignmentRight     = 2,    // Visually right aligned
#else /* !TARGET_OS_IPHONE */
    NSTextAlignmentRight     = 1,    // Visually right aligned
    NSTextAlignmentCenter    = 2,    // Visually centered
#endif
    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.
    NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script
} NS_ENUM_AVAILABLE_IOS(6_0);

为什么NSTextAlignmentRight和NSTextAlignmentCenter的值被翻转为TARGET_OS_IPHONE而不是?

1 个答案:

答案 0 :(得分:2)

在iOS 6之前,iOS没有NSTextAlignment。 iOS使用UITextAlignmentCenter值为1Right值为2

然后在iOS 6中添加了NSTextAlignment。为了保持向后兼容性,NSTextAlignmentCenter的值与UITextAlignmentCenter相同。与Right相同。

更重要的是,iOS上的NSTextAlignment枚举与弃用的UITextAlignment相匹配,而不是与OS X中的值相同。

iOS上的UITextAlignment和OS X上的NSTextAlignment之间的原始差异可能是一个简单的疏忽。但这是一个简单的猜测。