typedefNS_OPTIONS(NSUInteger,UIViewAnimationOptions){UIViewAnimationOptionLayoutSubviews=1<<0,UIViewAnimationOptionAllowUserInteraction=1<<1,// turn on user interaction while animatingUIViewAnimationOptionBeginFromCurrentState=1<<2,// start all views from current value, not initial valueUIViewAnimationOptionRepeat=1<<3,// repeat animation indefinitelyUIViewAnimationOptionAutoreverse=1<<4,// if repeat, run animation back and forthUIViewAnimationOptionOverrideInheritedDuration=1<<5,// ignore nested durationUIViewAnimationOptionOverrideInheritedCurve=1<<6,// ignore nested curveUIViewAnimationOptionAllowAnimatedContent=1<<7,// animate contents (applies to transitions only)UIViewAnimationOptionShowHideTransitionViews=1<<8,// flip to/from hidden state instead of adding/removingUIViewAnimationOptionOverrideInheritedOptions=1<<9,// do not inherit any options or animation typeUIViewAnimationOptionCurveEaseInOut=0<<16,// defaultUIViewAnimationOptionCurveEaseIn=1<<16,UIViewAnimationOptionCurveEaseOut=2<<16,UIViewAnimationOptionCurveLinear=3<<16,UIViewAnimationOptionTransitionNone=0<<20,// defaultUIViewAnimationOptionTransitionFlipFromLeft=1<<20,UIViewAnimationOptionTransitionFlipFromRight=2<<20,UIViewAnimationOptionTransitionCurlUp=3<<20,UIViewAnimationOptionTransitionCurlDown=4<<20,UIViewAnimationOptionTransitionCrossDissolve=5<<20,UIViewAnimationOptionTransitionFlipFromTop=6<<20,UIViewAnimationOptionTransitionFlipFromBottom=7<<20,}NS_ENUM_AVAILABLE_IOS(4_0);
UIViewAnimationOptionsoption=UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionTransitionCrossDissolve;if(option&UIViewAnimationOptionAllowUserInteraction){NSLog(@"UIViewAnimationOptionAllowUserInteraction has been set");}if(option&UIViewAnimationOptionBeginFromCurrentState){NSLog(@"UIViewAnimationOptionBeginFromCurrentState has been set");}UInt8optionCurve=option>>16&0xf;if(optionCurve==1){NSLog(@"UIViewAnimationOptionCurveEaseIn has been set");}UInt8optionTransition=option>>20&0xf;if(optionTransition==5){NSLog(@"UIViewAnimationOptionTransitionCrossDissolve has been set");}
这里最需要注意的地方就是,对互斥的状态的设置必须尤为小心,如果你这么写:
1234
UIViewAnimationOptionsbadOption=UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionCurveEaseOut;UInt8oops=badOption>>16&0xf;NSLog(@"Sorry, it's not UIViewAnimationOptionCurveEaseInOut");NSLog(@"oops = %d, you got UIViewAnimationOptionCurveLinear",oops);