作為一個菜鳥,在我剛進入ios這個坑的時候,動畫對我來說好像很高大上,很遙遠,但是事實卻是真的很高大上很遙遠,為了紀念我的動畫學習之路,特書此文,以表......
一、導入POP框架
1.CocoaPods方法導入?
直接 pod ‘pop’ 或者 pod 'pop',:git => 'https://github.com/facebook/pop.git'
2.沒有CocoaPods導入方法 首先下載POP這個框架,可在這https://github.com/facebook/pop 下載,下載完之后添加到你的工程里。注意,記得把工程的Other Linker Flags 選項添加 “-lc++”;(如圖POP1所示)

二、POP的使用在這里只列舉少部分例子?
1.第一步是導入頭文件 #import遵循協(xié)議
例子1:彈性擴張動畫
首先創(chuàng)建一個動畫動作的View
self.popView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
self.popView.center = self.view.center;
self.popView.backgroundColor = [UIColor greenColor];
self.popView.layer.cornerRadius = self.popView.frame.size.width *0.5;
[self.view addSubview:self.popView];
然后就是創(chuàng)建彈性動畫,代碼如下
POPSpringAnimation * springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY];
springAnimation.name = @"222222";
springAnimation.delegate = self;
springAnimation.toValue? ? ? ? ? ? = [NSValue valueWithCGPoint:CGPointMake(1, 1)];
springAnimation.velocity? ? ? ? ? ? = [NSValue valueWithCGPoint:CGPointMake(-2, -2)];
springAnimation.springBounciness? ? = 20.f;
springAnimation.springSpeed? ? ? ? = 10.f;
springAnimation.dynamicsTension? ? = 700.f;//動態(tài)張力
springAnimation.dynamicsFriction? ? = 7.f;//摩擦
springAnimation.dynamicsMass? ? ? ? = 3.f;//動態(tài)質量
[self.popView pop_addAnimation:springAnimation forKey:nil];
監(jiān)聽動畫結束可以實現(xiàn)其協(xié)議方法里的
-(void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished方法
例子2:旋轉動畫
POPSpringAnimation *spin = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerRotation];
spin.fromValue = @(M_PI / 4);
spin.toValue = @(0);
spin.springBounciness = 20;
spin.velocity = @(10);
[self.popView.layer pop_addAnimation:spin forKey:@"likeAnimation"];
例子3:膨脹
POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY];
sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(8, 8)];
sprintAnimation.springBounciness = 20.f;
sprintAnimation.name = @"1233";
//? ? sprintAnimation.delegate = self;
[bt pop_addAnimation:sprintAnimation forKey:@"sendAnimation"];
注意:有沒有發(fā)現(xiàn),其實這幾個動畫除了參數(shù)不一樣外,最大的區(qū)別就是animationWithPropertyNamed:這里這個Name不一樣,所以決定不同動畫就用不同的Name,其它參數(shù)就可以按自己的需求實際來設計了
例子一:UITableViewCell 動畫
要在UITableViewCell 上添加動畫,其實也不難,效果就是當我們點擊某一個cell的時候,動畫就開始,在這個例子中,我們給cell添加兩個動畫,一個是放大與縮回動畫。
要重寫UITableViewCell的-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated方法,在該方法中添加代碼如下:
-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
[super setHighlighted:highlighted animated:animated];
if (self.highlighted) {
POPBasicAnimation *scaleAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewScaleXY];
scaleAnimation.duration = 0.1;
scaleAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)];
[self.textLabel pop_addAnimation:scaleAnimation forKey:@"scalingUp"];
} else {
POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY];
sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)];
sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)];
sprintAnimation.springBounciness = 50.f;
[self.textLabel pop_addAnimation:sprintAnimation forKey:@"springAnimation"];
}
}
如此即可實現(xiàn)cell動畫,動畫效果如下圖POP2(這個動畫效果圖是網(wǎng)上盜用的:http://m.itdecent.cn/p/47ce70f3bf59)

總結:說了那么多,是時候該來總結一下了,POP 動畫的簡單應用方法都是大同小異,主要是區(qū)分 animationWithPropertyNamed:這個方法,現(xiàn)在總結一下這個方法的種類:
/*
/**
圖層(CALayer)通用動畫屬性.
extern NSString * const kPOPLayerBackgroundColor;
extern NSString * const kPOPLayerBounds;
extern NSString * const kPOPLayerCornerRadius;
extern NSString * const kPOPLayerBorderWidth;
extern NSString * const kPOPLayerBorderColor;
extern NSString * const kPOPLayerOpacity;
extern NSString * const kPOPLayerPosition;
extern NSString * const kPOPLayerPositionX;
extern NSString * const kPOPLayerPositionY;
extern NSString * const kPOPLayerRotation;
extern NSString * const kPOPLayerRotationX;
extern NSString * const kPOPLayerRotationY;
extern NSString * const kPOPLayerScaleX;
extern NSString * const kPOPLayerScaleXY;
extern NSString * const kPOPLayerScaleY;
extern NSString * const kPOPLayerSize;
extern NSString * const kPOPLayerSubscaleXY;
extern NSString * const kPOPLayerSubtranslationX;
extern NSString * const kPOPLayerSubtranslationXY;
extern NSString * const kPOPLayerSubtranslationY;
extern NSString * const kPOPLayerSubtranslationZ;
extern NSString * const kPOPLayerTranslationX;
extern NSString * const kPOPLayerTranslationXY;
extern NSString * const kPOPLayerTranslationY;
extern NSString * const kPOPLayerTranslationZ;
extern NSString * const kPOPLayerZPosition;
extern NSString * const kPOPLayerShadowColor;
extern NSString * const kPOPLayerShadowOffset;
extern NSString * const kPOPLayerShadowOpacity;
extern NSString * const kPOPLayerShadowRadius;
/**
圖形層(CAShapeLayer)通用動畫屬性.
extern NSString * const kPOPShapeLayerStrokeStart;
extern NSString * const kPOPShapeLayerStrokeEnd;
extern NSString * const kPOPShapeLayerStrokeColor;
extern NSString * const kPOPShapeLayerFillColor;
/**
視圖約束(NSLayoutConstraint)通用動畫屬性.
extern NSString * const kPOPLayoutConstraintConstant;
/**
視圖(UIView)通用動畫屬性.
extern NSString * const kPOPViewAlpha;
extern NSString * const kPOPViewBackgroundColor;
extern NSString * const kPOPViewBounds;
extern NSString * const kPOPViewCenter;
extern NSString * const kPOPViewFrame;
extern NSString * const kPOPViewScaleX;
extern NSString * const kPOPViewScaleXY;
extern NSString * const kPOPViewScaleY;
extern NSString * const kPOPViewSize;
extern NSString * const kPOPViewTintColor;
/**
滾動視圖(UIScrollView)通用動畫屬性.
extern NSString * const kPOPScrollViewContentOffset;
extern NSString * const kPOPScrollViewContentSize;
extern NSString * const kPOPScrollViewZoomScale;
extern NSString * const kPOPScrollViewContentInset;
/**
列表(UITableView)通用動畫屬性.
extern NSString * const kPOPTableViewContentOffset;
extern NSString * const kPOPTableViewContentSize;
/**
集合視圖(UICollectionView)通用動畫屬性.
extern NSString * const kPOPCollectionViewContentOffset;
extern NSString * const kPOPCollectionViewContentSize;
/**
導航欄(UINavigationBar)通用動畫屬性.
extern NSString * const kPOPNavigationBarBarTintColor;
/**
工具欄(UIToolBar)通用動畫屬性.
extern NSString * const kPOPToolbarBarTintColor;
/**
標簽欄(UITabBar)通用動畫屬性.
extern NSString * const kPOPTabBarBarTintColor;
/**
標簽(UILabel)通用動畫屬性.
extern NSString * const kPOPLabelTextColor;
*/
時間問題,先寫到這,以后接著寫轉場動畫等例子。。。。。。
———————— 蔣