为什么不同的块动画常量具有相同的值?

Sta*_*ley 6 cocoa-touch objective-c ios4 ios

UIViewAnimationOptions
用块动画视图的选项.

enum {
   UIViewAnimationOptionLayoutSubviews            = 1 <<  0,
   UIViewAnimationOptionAllowUserInteraction      = 1 <<  1,
   UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2,
   UIViewAnimationOptionRepeat                    = 1 <<  3,
   UIViewAnimationOptionAutoreverse               = 1 <<  4,
   UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5,
   UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6,
   UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7,
   UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8,

   UIViewAnimationOptionCurveEaseInOut            = 0 << 16,
   UIViewAnimationOptionCurveEaseIn               = 1 << 16,
   UIViewAnimationOptionCurveEaseOut              = 2 << 16,
   UIViewAnimationOptionCurveLinear               = 3 << 16,

   UIViewAnimationOptionTransitionNone            = 0 << 20,
   UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,
   UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,
   UIViewAnimationOptionTransitionCurlUp          = 3 << 20,
   UIViewAnimationOptionTransitionCurlDown        = 4 << 20,
};
typedef NSUInteger UIViewAnimationOptions;
Run Code Online (Sandbox Code Playgroud)

考虑iOS文档中的关于枚举定义.我的问题是:
对于UIViewAnimationOptionCurveEaseInOut,常量是"0 << 16",但是如果我的理解是正确的,那么左移16个位置的0仍然是0.它应该与UIViewAnimationOptionTransitionNone相同,即"0 << 20" (因为它也应该是0).有两个非常不同的选项等于相同的值似乎没有意义.

此外,我的测试显示UIViewAnimationOptionCurveEaseInOut似乎根本没有任何效果.

我可能会有一些误解,希望知识渊博的人会帮助......

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIView_Class/UIView/UIView.html%23//apple_ref/c/tdef/UIViewAnimationOptions

Vik*_*ica 7

所有等于0的选项都是默认设置,因此如果您没有传入任何选项,则与传入(UIViewAnimationOptionCurveEaseInOut| UIViewAnimationOptionTransitionNone)或仅传入相同0

  • 它们是一个动画的不同方面:效果(向上卷曲,向下卷曲,向上翻转,向下翻转)和速度曲线(缓入,缓和进出,线性),每个方面都有默认值.这个默认值用0表示. (2认同)