您的位置:首页 > 产品设计 > UI/UE

通过layer的contents属性来实现uiimageview的淡入切换

2015-03-30 22:58 411 查看
#import "ViewController.h"

@interface ViewController ()
@property(nonatomic,strong)CALayer *imageLayer;
@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIImage *image1=[UIImage imageNamed:@"1"];
self.imageLayer=[CALayer layer];
self.imageLayer.frame=CGRectMake(0, 0, 375, 300);
self.imageLayer.contents=(__bridge id)image1.CGImage;
[self.view.layer addSublayer:self.imageLayer];

[self performSelector:@selector(layerAnimation) withObject:nil afterDelay:3];
}
-(void)layerAnimation
{
/*隐式动画
UIImage *image2=[UIImage imageNamed:@"2"];
self.imageLayer.contents=(__bridge id)image2.CGImage;
*/
//显示动画,图片动画
UIImage *image2=[UIImage imageNamed:@"2"];
CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"contents"];
basicAnimation.fromValue=self.imageLayer.contents;
basicAnimation.toValue=(__bridge id)image2.CGImage;
basicAnimation.duration=3.0f;

//bounds动画
CABasicAnimation *boundsAnimation=[CABasicAnimation animationWithKeyPath:@"bounds"];
boundsAnimation.fromValue=[NSValue valueWithCGRect:self.imageLayer.bounds];
boundsAnimation.toValue=[NSValue valueWithCGRect:CGRectMake(0, 0, 375/2.0f, 300/2.0f)];
boundsAnimation.duration=3.0f;

//组合动画
CAAnimationGroup *groupAnimation=[CAAnimationGroup animation];
groupAnimation.animations=@[basicAnimation,boundsAnimation];
groupAnimation.duration=3.0f;

//设置layer动画结束后的值必须设置,否则的话会恢复动画之前的状态

self.imageLayer.contents=(__bridge id)image2.CGImage;
self.imageLayer.bounds=CGRectMake(0, 0, 375/2.0f, 300/2.0f);
[self.imageLayer addAnimation:basicAnimation forKey:nil];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: