Wyłączanie animacji podczas zmiany właściwości warstwy / widoku?
Skomponowałem rodzaj animacji, dodając kilka warstw do UIView. Warstwy te powinny być widoczne lub niewidoczne za pomocą skryptu.
Skrypt jest oparty na obiektach, które implementują protokół:
<code>// the general protocol for a step @protocol ActionStep -(void) applyForTime:(int)playtime; -(void) reset; @end </code>
w zegarze wykonuję iteracje obiektów kroku:
<code>NSEnumerator* enumerator = [ScriptObjects objectEnumerator]; id obj; while ( obj = [enumerator nextObject] ) { id <ActionStep> step = obj; [step applyForTime:currentmilliseconds]; } </code>
Jednym obiektem skryptu jest ten obiekt:
<code>@interface LayerStep : NSObject <ActionStep> { int mTimeOffset; CGPoint mOffset; float mAlpha; LayerObject* mTheLayer; bool mPrepared; } -(id)initWithLayerObject: (LayerObject*) theLayer Milliseconds:(int) milliseconds Offset:(CGPoint) offset Alpha:(float)alpha; @end </code>
i wreszcie implementuję protokół w warstwie:
<code>-(void) applyForTime:(int)playtime { if ( mPrepared ) // has the step already been executed? { if ( playtime >= mTimeOffset ) { [mTheLayer setAlpha:mAlpha]; // AssignedLayer.opacity = alpha; [mTheLayer setPosition:mOffset]; // AssignedLayer.position = offset; mPrepared = false; } } } </code>
Zastosowanie zmian w kroku powoduje przejście.
Czy istnieje sposób na wyłączenie tego przejścia? W tej chwili nie używam żadnego wywołania CoreAnimation, tylko same właściwości (patrz kod).