IOS development: Detailed description of UIView Animation

Source: Internet
Author: User

IOS development: Detailed description of UIView Animation

The work required to execute an animation is automatically completed by the UIView class, but you still need to notify the view when you want to execute the animation. To do this, you need to wrap the code for changing attributes into a code block.

1. How to Create a UIView Animation

-(Void) buttonPressed

{

// Switch the two view locations in the current view Controller

[Self. view exchangeSubviewAtIndex: 0 withSubviewAtIndex: 1];

// UIView starts the animation. The first parameter is the animation identifier, and the second parameter is used to transmit the application information to the animation proxy.

[UIView beginAnimations: @ "View Flip" context: nil];

// Animation duration

[UIView setAnimationDuration: 1.25];

// Sets the animation callback function. You can use the callback method after setting it.

[UIView setAnimationDelegate: self];

// Set the animation curve to control the animation speed

[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];

// Set the Animation Mode and specify the animation location

[UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView: self. view cache: YES];

// Submit the UIView animation.

[UIView commitAnimations];

}

-(Void) viewDidLoad

{

[Super viewDidLoad];

// The main function is to use the UIView animation to switch between two controllers.

Self. blueController = [[BlueViewController alloc] initWithNibName: nil bundle: nil];

// Set the size of the navigation controller view to the entire Screen

[Self. blueController. view setFrame: CGRectMake (0, 0, self. view. frame. size. width, self. view. frame. size. height)];

Self. yellowController = [[YellowController alloc] initWithNibName: nil bundle: nil];

[Self. yellowController. view setFrame: CGRectMake (0, 0, self. view. frame. size. width, self. view. frame. size. height)];

// Insert the two controller views to the current navigation controller view. Insert the yellowController and display it at the beginning.

[Self. view insertSubview: self. blueController. view atIndex: 0];

[Self. view insertSubview: self. yellowController. view atIndex: 1];

// Create the right button of the navigation controller. The button name is "next ".

// Add a buttonPressed event

Self. rightBarItem = [[UIBarButtonItem alloc] initWithTitle: @ "next" style: UIBarButtonItemStylePlain target: self action: @ selector (buttonPressed)];

// Add the button to the default right button of the navigation Controller

Self. navigationItem. rightBarButtonItem = self. rightBarItem;

}

There is a problem: If the animation is not placed in the button event and directly placed in viewDidLoad, the program first executes this controller, and the animation will not be displayed.

Cause: this problem occurs because the system has an animation when it is started, and the system animation and the animation are repeated.

Solution:

1. Write the animation in the button event

2. Use a timer.

AreAnimationsEnabled

Returns a Boolean value indicating whether the animation ends.

+ (BOOL) areAnimationsEnabled

Return Value

If the animation ends, YES is returned; otherwise, NO is returned.

BeginAnimations: context:

Start an animation Block

+ (Void) beginAnimations :( NSString *) animationID context :( void *) context

Parameters

AnimationID

The internal application identifier of the animation block is used to pass the message to the animation proxy-This selector is set using setAnimationWillStartSelector: And setAnimationDidStopSelector.

Context

The additional application information is used to pass the message to the animation proxy-This selector uses setAnimationWillStartSelector: And setAnimationDidStopSelector: method.

Discussion

This value is changed because some attributes that need to be generated in the animation block are set. Animation blocks can be nested. If it is not called in an animation block, the setAnimation class method will do nothing. Use beginAnimations: context: to start an animation block and use the commitAnimations class method to end an animation block.

CommitAnimations

End an animation block and start when it is outside the animation block.

+ (Void) commitAnimations

Discussion

If the current animation block is the outermost animation block, the animation block starts when the application returns to the loop. All applications of an animation in an independent thread will not be interrupted. With this method, multiple animations can be implemented. View the setAnimationBeginsFromCurrentState: to learn if an animation starts when another animation is playing.

LayerClass

The returned class is used to create a layer instance object of this class.

+ (Class) layerClass

Return Value

A class used to create a view layer

Discussion

Override subclass to specify a custom class for display. Called when creating a view layer. The default value is a CALayer class object.

SetAnimationBeginsFromCurrentState

:

Set the animation to start playing from the current status.

+ (Void) setAnimationBeginsFromCurrentState :( BOOL) fromCurrentState

Parameters

FromCurrentState

YES if the animation needs to be played from their current status. Otherwise, it is NO.

Discussion

If it is set to YES, when the animation is running, the current view position will be used as the starting state of the new animation. If it is set to NO, the new animation uses the position of the last state of the view as the start state before the current animation ends. This method will not do anything if the animation is not running or not called outside the animation block. Use beginAnimations: context: Class Method to start and use the commitAnimations class method to end the animation block. The default value is NO.

SetAnimationCurve

:

Set the curve of the animation attribute change in the animation block.

+ (Void) setAnimationCurve :( UIViewAnimationCurve) curve

Discussion

The animation curve is the relative speed during the animation operation. This method will be invalid if it is called outside the animation block. Use beginAnimations: context: Class Method to start an animation block and use commitAnimations to end the animation block. The default animation curve value is UIViewAnimationCurveEaseInOut.

SetAnimationDelay:

Set the animation delay attribute in the animation block (in seconds)

+ (Void) setAnimationDelay :( NSTimeInterval) delay

Discussion

This method is invalid when it is called outside the animation block. Use beginAnimations: context: Class Method to start an animation block and use the commitAnimations class method to end the animation block. The default animation delay is 0.0 seconds.

SetAnimationDelegate:

Sets the animation message proxy.

+ (Void) setAnimationDelegate :( id) delegate

Parameters

Delegate

You can use setAnimationWillStartSelector: And setAnimationDidStopSelector: to set the object for receiving proxy messages.

Discussion

This method has no effect on the animation block. Use beginAnimations: context: Class Method to start an animation block and use the commitAnimations class method to end an animation block. The default value is nil.

SetAnimationDidStopSelector:

Set the message to the animation proxy when the animation is stopped.

+ (Void) setAnimationDidStopSelector :( SEL) selector

Parameters

Selector

Send the animation to the animation proxy when the animation ends. The default value is NULL. The selector must have the signature of the following method: animationFinished :( NSString *) animationID finished :( BOOL) finished context :( void *) context.

AnimationID

The identifier provided by an application. Same as beginAnimations: context. This parameter can be blank.

Finished

If the animation is completed before it is stopped, YES is returned; otherwise, NO is returned.

Context

An optional application content provider. Same as beginAnimations: context: method. It can be null.

Discussion

This method has no effect on the animation block. Use beginAnimations: context: Class Method to start an animation block and end with the commitAnimations class method. The default value is NULL.

SetAnimationDuration:

Set the animation duration in the animation block (in seconds)

+ (Void) setAnimationDuration :( NSTimeInterval) duration

Parameters

Duration

The duration of an animation.

Discussion

This method has no effect on the animation block. Use beginAnimations: context: Class Method to start an animation block and use the commitAnimations class method to end an animation block. The default value is 0.2.

SetAnimationRepeatAutoreverses:

Set whether the animation effect in the animation block is automatically replayed.

+ (Void) setAnimationRepeatAutoreverses :( BOOL) repeatAutoreverses

Parameters

RepeatAutoreverses

If the animation is automatically repeated, YES is used; otherwise, NO is used.

Discussion

Auto-repeat indicates that the animation starts playing again after the playback ends. Use setAnimationRepeatCount: Class Method to specify the automatic animation replay time. If the number of duplicates is 0 or outside the animation block, there will be no effect. Use beginAnimations: context: Class Method to start an animation block and use the commitAnimations method to end an animation block. The default value is NO.

SetAnimationRepeatCount:

Set the number of repetitions of an animation in the animation module.

+ (Void) setAnimationRepeatCount :( float) repeatCount

Parameters

RepeatCount

Number of animation repetitions. This value can be a score.

Discussion

This attribute has no effect on the animation block. Use beginAnimations: context: Class Method to start an animation block and end with the commitAnimations class method. The default animation does not rotate.

SetAnimationsEnabled:

Set whether to activate the animation

+ (Void) setAnimationsEnabled :( BOOL) enabled

Parameters

Enabled

If YES, activate the animation; otherwise, NO.

Discussion

When the animation parameter is not activated, the animation attribute changes will be ignored. The animation is activated by default.

SetAnimationStartDate:

Set the start time of the animation attribute change within the animation block.

+ (Void) setAnimationStartDate :( NSDate *) startTime

Parameters

StartTime

Start time of an animation

Discussion

Use beginAnimations: context: Class Method to start an animation block and use the commitAnimations class method to end the animation block. The default start time value is returned by the CFAbsoluteTimeGetCurrent method.

SetAnimationTransition: forView: cache:

Set transition for the view in the animation Block

+ (Void) setAnimationTransition :( UIViewAnimationTransition) transition forView :( UIView *) view cache :( BOOL) cache

Parameters

Transition

Apply a transition effect to the view. Possible values are defined in UIViewAnimationTransition.

View

View object to be transitioned.

Cache

If YES, rendering the Image view at the beginning and end and creating frames in the animation; otherwise, the view is rendered at each frame. For example, you do not need to update the view continuously during the view transition. You only need to wait until the conversion is complete before updating the view.

Discussion

If you want to change the appearance of a view during the transformation process. For example, the file uses the container view of a UIView subclass from one view to another, as shown below:

1. Begin an animation block.

2. Set the transition on the container view.

3. Remove the subview from the container view.

4. Add the new subview to the container view.

5. Commit the animation block.

1. Start an animation block. 2. Set the conversion in the container view. 3. Remove the child view from the container view. 4. Add a sub-View to the container view. 5. End the animation block.

SetAnimationWillStartSelector:

Send a message to the animation proxy when the animation starts.

+ (Void) setAnimationWillStartSelector :( SEL) selector

Parameters

Selector

Send messages to the animation agent before the animation starts. The default value is NULL. This selector must have the same parameters as beginAnimations: context: method, an optional program identifier and content. All these parameters can be nil.

Discussion

This method has no effect on the animation block. Use beginAnimations: context: Class Method to start an animation block and end with the commitAnimations class method.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.