0<<< 16和0<< 20?我在UIViewAnimationOptions中找到了它。
答案 0 :(得分:6)
没有。他们都是0
UIViewAnimationOptionTransitionNone = 0 << 20,
UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20,
UIViewAnimationOptionTransitionFlipFromRight = 2 << 20,
UIViewAnimationOptionTransitionCurlUp = 3 << 20,
UIViewAnimationOptionTransitionCurlDown = 4 << 20,
UIViewAnimationOptionTransitionCrossDissolve = 5 << 20,
UIViewAnimationOptionTransitionFlipFromTop = 6 << 20,
UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20,
UIViewAnimationOptionTransition设置都与设置位20-23有关。 UIViewAnimationOptionTransitionNone为零,但是,为了保持一致性,它的定义方式与其他UIViewAnimationTransitions相同。
两个给定值均为零,表示它们都是默认设置,如果未传递转换标志,则默认情况下不会转换。但您也可以明确指定。
答案 1 :(得分:5)
0 << 16
左移16位,0 << 20
移位20位。两人最终都是0。
我猜它是为了清晰起见,就像有时在malloc中使用sizeof(char)一样。
答案 2 :(得分:4)
忽略 UIViewAnimationOptions 部分......
int
是16位或更少,则两个表达式都会调用UB(在这种情况下不能说出差异)0 << 16
为0; 0 << 20
是UB UB表示Undefined Behaviour。
答案 3 :(得分:3)
其中有2个表明通过设置你实际上什么也没做。但是,您有助于自我记录您的代码,这使得其他人更容易理解您正在做的事实上是您的意图。
答案 4 :(得分:2)
他们是按位左移操作员。一般要点是,通过在枚举定义中使用这样的语法,您可以使用按位OR运算符组合多个动画。例如,传入动画选项时,您可以编写
(UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionTransitionCurlUp)
它会以易于进出的曲线进行卷曲,并在完成时重复。这是通过查看最终结果中的各个位来完成的。
BTW 0 << 16
为UIViewAnimationOptionCurveEaseInOut
,0 << 20
为UIViewAnimationOptionTransitionNone