iOS development--animation programming oc & (i) Basic Animation
Last Update:2015-06-04
Source: Internet
Author: User
<span id="Label3"></p><p style="text-align: center;"><p style="text-align: center;"><span style="font-size: 18pt;">Basic animations</span></p></p><p><p><strong>first, Brief Introduction</strong></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Core Animation, The Chinese translation is a central animation, it is a very powerful set of animation processing api, using it can make very beautiful animation effect, and often do more with less. In other words, very powerful functionality can be achieved with a small amount of code.</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Core animation is cross-platform and can be used on Mac OS X and iOS Platforms.</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">The animation execution of Core animation is performed in the background and does not block the main thread. Without blocking the main thread, it can be understood that you can still tap (the Button) while performing the Animation.</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">It is important to note that the Core animation is directly acting on the calayer, not UIVIEW.</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;"></p></p><p><p><strong>second, the use of Core animation steps</strong></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">1. Use it to first add quartzcore.framework frame and introduce the main header file <QuartzCore/QuartzCore.h> (iOS7 not required)</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">2. Initialize a Caanimation object and set some animation-related properties</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">3. Add the Caanimation object to Calayer by calling Calayer's Addanimation:forkey: method to start the animation</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">4. You can stop the animation in Calayer by calling Calayer's Removeanimationforkey: method</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;"></p></p><p><p><strong>third, caanimation</strong></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Inheritance structure diagram of a class</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;"> </p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Caanimation is the parent class for all animation classes, but it cannot be used directly, and its subclasses should be Used.</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Common Properties Are:</p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span>Duration: duration of animation</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span>Repeatcount: number of repetitions of an animation</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span>Timingfunction: controlling the rhythm of animation operation</span></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;"><span>Description: (1) only 4 subcategories of animated classes are available: cabasicanimation, cakeyframeanimation, catransition, caanimationgroup</span></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">(2) Camediatiming is a protocol (protocol).</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Capropertyanimation is a subclass of caanimation, but cannot be used directly, to create an animated object, you should use its two subclasses: cabasicanimation and cakeyframeanimation</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">It has a nsstring type of KeyPath property, you can specify that a property of Calayer is named keypath, and the value of this property of Calayer is modified to achieve the corresponding animation Effect. For example, specifying @ "position" for KeyPath will modify the value of the position property of the Calayer to achieve a panning animation effect</p></p><p><p></p></p><p><p><strong>Iv. Additional Information</strong></p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">The parent class of all animated objects, which controls the duration and speed of the animation, is an abstract class that cannot be used directly and should use its specific subclasses</p></p><p style="margin-left: 30px;"><p style="margin-left: 30px;">Attribute Resolution: (red represents a property from the Camediatiming Protocol)</p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span style="color: #ff0000;"><strong>Duration</strong>: Duration of animation</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span style="color: #ff0000;"><strong>repeatcount</strong>: Number of repetitions of an animation</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span style="color: #ff0000;"><strong>repeatduration</strong>: Repetition time of animation</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><strong>removedoncompletion</strong>: The default is yes, which is removed from the layer after the animation has finished executing, and the drawing reverts to the state before the animation was Executed. If you want the layer to remain displayed after the animation has been executed, set it to no, but also set Fillmode to Kcafillmodeforwards</p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span style="color: #ff0000;"><strong>Fillmode</strong>: Determines the behavior of the current object during a non-active time period. for example, before the animation starts, the animation ends</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><span style="color: #ff0000;"><strong>beginTime</strong>: Can be used to set the animation delay execution time, If you want to delay 2s, set to Cacurrentmediatime () +2,cacurrentmediatime () is the current time of the layer</span></p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><strong>timingfunction</strong>: Speed control function to control the rhythm of animation operation</p></p><p style="margin-left: 60px;"><p style="margin-left: 60px;"><strong>delegate</strong>: Animation agent</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span> <span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">*</span></span><span style="color: #008080;"><span style="color: #008080;">2</span></span> <span style="color: #008000;"><span style="color: #008000;">Customize a view, listen for gesture clicks, animate when gestures touch the screen</span></span><span style="color: #008080;"><span style="color: #008080;">3</span></span> <span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008000;"><span style="color: #008000;">1. Zooming</span></span><span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #008000;"><span style="color: #008000;">2. Rotate</span></span><span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span> <span style="color: #008000;"><span style="color: #008000;">to determine the principle of animation suspension and Continuation:</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span> <span style="color: #008000;"><span style="color: #008000;">depending on whether the animation is an animation (particle Effect) or a destructive animation (e.g., Big strokes, throwing knives, bullets, etc.)</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span> <span style="color: #008000;"><span style="color: #008000;">If the animation is dotted, you don't need to pause when you lose focus</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008000;"><span style="color: #008000;">if it's a destructive animation, you need to pause when you lose focus</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">3. In this example, exit the background pause animation, go back to the foreground, continue the animation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">Basic Animation Simple Summary</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">1. Animate calayer by modifying the animated properties of the</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">2. Fromvalue and Tovalue</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008000;"><span style="color: #008000;">3. Steps used by the Animation:</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">1> Instantiation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008000;"><span style="color: #008000;">2> Defining Properties</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008000;"><span style="color: #008000;">3> Adding to a layer</span></span><span style="color: #008080;"><span style="color: #008080;"></span> at</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">Note the point:</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">1> Looping animations, If you need to continue after the focus is resumed, be sure to set the Removedoncompletion property to No</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">2> for panning animations, you need to adjust the position of the object in the agent method at the end of the animation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">3> If you want to do the wireless cycle animation, you can set the following [anim setrepeatcount:huge_valf];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">4> about pausing and continuing animations, you can refer to the code</span></span><span style="color: #008080;"><span style="color: #008080;"></span> in</span> <span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> to</span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Viewdidload</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">[super viewdidload];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> *</span>UIView *myview = [[UIView Alloc]initwithframe:cgrectmake (<span style="color: #800080;"><span style="color: #800080;"></span> -</span>,<span style="color: #800080;"><span style="color: #800080;"></span> -</span>,<span style="color: #800080;"><span style="color: #800080;"></span> -</span>,<span style="color: #800080;"><span style="color: #800080;"></span> -</span><span style="color: #000000;"><span style="color: #000000;">)];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #000000;"><span style="color: #000000;">[myView Setbackgroundcolor:[uicolor redcolor];</span></span><span style="color: #008080;"><span style="color: #008080;">Panax Notoginseng</span></span> <span style="color: #000000;"><span style="color: #000000;">[self.view addsubview:myview];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>Self.myview =<span style="color: #000000;"><span style="color: #000000;">myView;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #000000;"><span style="color: #000000;">}</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark-touch method<span style="color: #008080;"><span style="color: #008080;"></span> +</span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *)<span style="color: #0000ff;"><span style="color: #0000ff;">Event</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">determine if the MyView has started spinning, and if it has already been rotated, stop</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span>Caanimation *anim = [self.myView.layer animationforkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Rotationanim</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span><span style="color: #000000;"><span style="color: #000000;">(anim) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Stop Animation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">[self.myView.layer removeallanimations];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">If the animation is paused, continue, if it pauses in playback</span></span><span style="color: #008080;"><span style="color: #008080;">Wuyi</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">can be judged according to myView.layer.speed, speed = = 0, Pause</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(self.myView.layer.speed = =<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">[self resumeanimation];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> wu</span>}<span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;"> {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">[self pauseanimation];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> about</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span>}<span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;"> {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">[self rotationanimation];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">}</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark-animation Pause and resume<span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark Animation paused<span style="color: #008080;"><span style="color: #008080;"></span> -</span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) PauseAnimation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Take out the current animation point in time, that is, the point of time to pause</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span>Cftimeinterval Pausetime =<span style="color: #000000;"><span style="color: #000000;">[self.myView.layer converttime:cacurrentmediatime () fromlayer:nil];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Set the time offset of the animation to specify the time offset to hold the animation at that point in</span> time</span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">[self.myView.layer settimeoffset:pausetime];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> in</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Set the animation run speed to 0, the animation default speed is 1.0</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span>[self.myView.layer setspeed:<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">}</span></span><span style="color: #008080;"><span style="color: #008080;"></span> about</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark Recovery Animation<span style="color: #008080;"><span style="color: #008080;"></span> the</span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Resumeanimation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. The time offset of the animation as the point in time when pausing</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span>Cftimeinterval Pausetime =<span style="color: #000000;"><span style="color: #000000;">self.myView.layer.timeOffset;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Calculate the exact start animation time according to the media time, and revise the time to pause the Animation.</span></span><span style="color: #008080;"><span style="color: #008080;">Bayi</span></span>Cftimeinterval beginTime = Cacurrentmediatime ()-<span style="color: #000000;"><span style="color: #000000;">pausetime;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. To clear the offset time by 0</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span>[self.myView.layer settimeoffset:<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4. Set the start animation time for a layer</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">[self.myView.layer setbegintime:begintime];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>[self.myView.layer setspeed:<span style="color: #800080;"><span style="color: #800080;">1.0</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">}</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark-animation method<span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark Rotate Animation<span style="color: #008080;"><span style="color: #008080;"></span> the</span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Rotationanimation</span></span><span style="color: #008080;"><span style="color: #008080;">94</span></span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Instantiating basic animations</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">rotate by default on Z axis</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span>Cabasicanimation *anim = [cabasicanimation animationwithkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">transform.rotation.z</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;">98</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> about</span>[self.myView.layer Setanchorpoint:cgpointmake (<span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">)];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;">101</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Set animation properties</span></span><span style="color: #008080;"><span style="color: #008080;">102</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Keep Spinning.</span></span><span style="color: #008080;"><span style="color: #008080;">103</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1) rotate for one week</span></span><span style="color: #008080;"><span style="color: #008080;">104</span></span>[anim settovalue:@ (<span style="color: #800080;"><span style="color: #800080;">2</span></span>*<span style="color: #000000;"><span style="color: #000000;">m_pi)];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2) nonstop rotation-animated Loop playback</span></span><span style="color: #008080;"><span style="color: #008080;">106</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Huge_valf is a very large floating point number, which specifies that this value can be considered an infinite loop of animation</span></span><span style="color: #008080;"><span style="color: #008080;">107</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">maxfloat</span></span><span style="color: #008080;"><span style="color: #008080;">108</span></span> <span style="color: #000000;"><span style="color: #000000;">[anim setrepeatcount:huge_valf];</span></span><span style="color: #008080;"><span style="color: #008080;">109</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>[anim setduration:<span style="color: #800080;"><span style="color: #800080;">0.5f</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;">111</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3) Delete When animation is complete</span></span><span style="color: #008080;"><span style="color: #008080;">113</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">for the animated effect of looping, be sure to set removedoncompletion to no, otherwise you cannot resume the animation</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;">[anim setremovedoncompletion:no];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Adding animations</span></span><span style="color: #008080;"><span style="color: #008080;">117</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">key can be arbitrarily specified to determine if the animation exists in the layer</span></span><span style="color: #008080;"><span style="color: #008080;">118</span></span>[self.myView.layer Addanimation:anim forkey:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Rotationanim</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;">119</span></span> <span style="color: #000000;"><span style="color: #000000;">}</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;">121</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">#pragma</span></span>Mark Zoom Animation<span style="color: #008080;"><span style="color: #008080;">122</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Scaleanimation</span></span><span style="color: #008080;"><span style="color: #008080;">123</span></span> <span style="color: #000000;"><span style="color: #000000;">{</span></span><span style="color: #008080;"><span style="color: #008080;">124</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Instantiating basic animations</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span>Cabasicanimation *anim = [cabasicanimation animationwithkeypath:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Transform.scale</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;">126</span></span> <span style="color: #008080;"><span style="color: #008080;">127</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Set animation properties</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Fromvalue & Tovalue</span></span><span style="color: #008080;"><span style="color: #008080;">129</span></span>[anim setfromvalue:@ (<span style="color: #800080;"><span style="color: #800080;">1.0</span></span><span style="color: #000000;"><span style="color: #000000;">)];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">shrink from the current size to half, then restore the initial size</span></span><span style="color: #008080;"><span style="color: #008080;">131</span></span>[anim settovalue:@ (<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">)];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Auto-flip Animations</span></span><span style="color: #008080;"><span style="color: #008080;">133</span></span> <span style="color: #000000;"><span style="color: #000000;">[anim setautoreverses:yes];</span></span><span style="color: #008080;"><span style="color: #008080;">134</span></span> <span style="color: #008080;"><span style="color: #008080;">135</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Animation Duration</span></span><span style="color: #008080;"><span style="color: #008080;">136</span></span>[anim setduration:<span style="color: #800080;"><span style="color: #800080;">0.5f</span></span><span style="color: #000000;"><span style="color: #000000;">];</span></span><span style="color: #008080;"><span style="color: #008080;">137</span></span> <span style="color: #008080;"><span style="color: #008080;">138</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Adding an animation to a layer</span></span><span style="color: #008080;"><span style="color: #008080;">139</span></span> <span style="color: #000000;"><span style="color: #000000;">[self.myView.layer Addanimation:anim forkey:nil];</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span>}</pre><p><p></p></p><p><p>iOS development--animation programming oc & (i) Basic Animation</p></p></span>