示例
typedef NS_OPTIONS(NSUInteger, UIViewAnimationOptions) {
UIViewAnimationOptionLayoutSubviews = 1 << 0, // 0000 0000 0000 0000 0000 0000 0001
UIViewAnimationOptionAllowUserInteraction = 1 << 1, // 0000 0000 0000 0000 0000 0000 0010
UIViewAnimationOptionBeginFromCurrentState = 1 << 2, // 0000 0000 0000 0000 0000 0000 0100
UIViewAnimationOptionRepeat = 1 << 3, // 0000 0000 0000 0000 0000 0000 1000
UIViewAnimationOptionAutoreverse = 1 << 4, // 0000 0000 0000 0000 0000 0001 0000
UIViewAnimationOptionOverrideInheritedDuration = 1 << 5, // 0000 0000 0000 0000 0000 0010 0000
UIViewAnimationOptionOverrideInheritedCurve = 1 << 6, // 0000 0000 0000 0000 0000 0100 0000
UIViewAnimationOptionAllowAnimatedContent = 1 << 7, // 0000 0000 0000 0000 0000 1000 0000
UIViewAnimationOptionShowHideTransitionViews = 1 << 8, // 0000 0000 0000 0000 0001 0000 0000
UIViewAnimationOptionOverrideInheritedOptions = 1 << 9, // 0000 0000 0000 0000 0010 0000 0000
UIViewAnimationOptionCurveEaseInOut = 0 << 16, // 0000 0000 0000 0000 0000 0000 0000
UIViewAnimationOptionCurveEaseIn = 1 << 16, // 0000 0000 0001 0000 0000 0000 0000
UIViewAnimationOptionCurveEaseOut = 2 << 16, // 0000 0000 0010 0000 0000 0000 0000
UIViewAnimationOptionCurveLinear = 3 << 16, // 0000 0000 0011 0000 0000 0000 0000
UIViewAnimationOptionTransitionNone = 0 << 20, // 0000 0000 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20, // 0000 0001 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionFlipFromRight = 2 << 20, // 0000 0010 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionCurlUp = 3 << 20, // 0000 0011 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionCurlDown = 4 << 20, // 0000 0100 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionCrossDissolve = 5 << 20, // 0000 0101 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionFlipFromTop = 6 << 20, // 0000 0110 0000 0000 0000 0000 0000
UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20, // 0000 0111 0000 0000 0000 0000 0000
UIViewAnimationOptionPreferredFramesPerSecondDefault = 0 << 24, // 0000 0000 0000 0000 0000 0000 0000
UIViewAnimationOptionPreferredFramesPerSecond60 = 3 << 24, // 0011 0000 0000 0000 0000 0000 0000
UIViewAnimationOptionPreferredFramesPerSecond30 = 7 << 24, // 0111 0000 0000 0000 0000 0000 0000
} NS_ENUM_AVAILABLE_IOS(4_0);
使用
// NS_OPTIONS,定义选项
typedef NS_OPTIONS(NSUInteger, MyOption) {
MyOptionNone = 0, // 二进制0000, 十进制0
MyOption1 = 1 << 0, // 0001, 1
MyOption2 = 1 << 1, // 0010, 2
MyOption3 = 1 << 2, // 0100, 4
MyOption4 = 1 << 3, // 1000, 8
};
// 声明定义枚举变量
MyOption option = MyOption1 | MyOption2; // 0001 | 0010 = 0011,3
// 检查是否包含某选型
if ( option & MyOption3 ){ // 0011 & 0100 = 0000
// 包含MyOption3
} else {
// 不包含MyOption3
}
// 增加选项:
option |= MyOption4; // 0011 | 1000 = 1011, 11
// 减少选项
option &= ~MyOption4; // 1011 & (~1000) = 1011 & ~0111 = 0011, 3