2011-06-22 17 views
6

UIViewAnimationOptions
Opcje animacji widoków za pomocą bloków.Dlaczego różne stałe animacji bloku mają tę samą wartość?

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; 

Zastanów się nad definicjami wyliczeń z dokumentacji systemu iOS. Moje pytanie brzmi:
Dla UIViewAnimationOptionCurveEaseInOut, stała się „0 < < 16”, ale jeśli moje rozumienie jest poprawne, 0 przesunięcie w lewo o 16 pozycjach wciąż 0. A powinna być taka sama jak UIViewAnimationOptionTransitionNone która jest „0 < < 20 "(ponieważ powinna być również 0). Posiadanie dwóch bardzo różnych opcji równych tej samej wartości nie wydaje się mieć sensu.

Ponadto moje testy pokazują, że UIViewAnimationOptionCurveEaseInOut nie ma żadnego efektu.

Nie może być jakieś nieporozumienie z mojej strony, mam nadzieję, że ktoś kompetentny pomoże ...

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

Odpowiedz

7

Wszystkie opcje, które są równe 0 są ustawieniami domyślnymi, więc jeśli nie przejść w dowolnym Opcja jest taka sama, jak podanie (UIViewAnimationOptionCurveEaseInOut| UIViewAnimationOptionTransitionNone) lub tylko 0

+0

Dziękuję za życzliwą pomoc. Twoja odpowiedź jest bardzo zwięzła i dokładna ... – Stanley

+0

Wciąż jestem zdezorientowany. Czy to określenie "UIViewAnimationOptionTransitionNone" spowoduje, że zachowanie animacji będzie łatwiejsze w obsłudze? – Philip007

+0

@ Philip007, nie. Oznacza to, że dla przejść (efekt animacji z jednego widoku do drugiego) domyślną wartością jest "UIViewAnimationOptionTransitionNone", ponieważ wynosi ona 0, a dla krzywej prędkości podczas animacji "UIViewAnimationOptionCurveEaseInOut" jest domyślna, ponieważ jest również 0. – vikingosegundo

Powiązane problemy