blob: 778cdc5386a4c03be9f2faba24be13aab575e315 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_UI_ANIMATION_UTIL_H_
#define IOS_CHROME_BROWSER_UI_ANIMATION_UTIL_H_
#import <UIKit/UIKit.h>
// Animations returned by these utility methods use kCAFillModeBoth and aren't
// automatically removed from the layer when finished. Remove the animations
// by calling |RemoveAnimationsFromLayers| in CATransaction completion blocks.
// This is done so the effects of animations that finish earlier persist until
// all animations in the transaction are finished.
// Returns an animation that will animate |layer| from |beginFrame| to
// |endFrame|.
CAAnimation* FrameAnimationMake(CALayer* layer,
CGRect beginFrame,
CGRect endFrame);
// Returns an animation that will animate the "opacity" property of a layer from
// |beginOpacity| to |endOpacity|.
CAAnimation* OpacityAnimationMake(CGFloat beginOpacity, CGFloat endOpacity);
// Returns an animation group containing the animations in |animations| that has
// the shortest duration necessary for all the animations to finish.
CAAnimation* AnimationGroupMake(NSArray* animations);
// Returns an animation that performs |animation| after |delay|.
CAAnimation* DelayedAnimationMake(CAAnimation* animation, CFTimeInterval delay);
// If |animation| is a CAAnimationGroup, searches its animations for a
// CABasicAnimation for |keyPath|. If |animation| is a CABasicAnimation, it
// will check its keyPath against |keyPath|.
CABasicAnimation* FindAnimationForKeyPath(NSString* keyPath,
CAAnimation* animation);
// Removes the animation for |key| from each CALayer in |layers|.
void RemoveAnimationForKeyFromLayers(NSString* key, NSArray* layers);
#endif // IOS_CHROME_BROWSER_UI_ANIMATION_UTIL_H_