国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Pop–實現任意iOS對象的任意屬性的動態變化

2019-11-14 18:23:36
字體:
來源:轉載
供稿:網友

pop

簡介

Pop 是一個可擴展的動畫引擎,可用于實現任意iOS對象的任意屬性的動態變化,支持一般動畫,彈性動畫和漸變動畫三種類型.

  • 項目主頁: pop

  • 最新示例: 點擊下載

  • 注意: 官方代碼中,并不包含實例,而是用于編譯的所有源代碼,建議自行新建工程,并結合下文的代碼片段查看效果.

入門

安裝

通過CocoaPods安裝

pod 'pop', '~> 1.0'

使用

在需要使用POP的地方,引入頭文件:

#import <pop/POP.h>

動畫的開始,停止 與 更新

把動畫添加到你想要擁有動態變化的對象上面,即可開始動畫:

POPSPRingAnimation *anim = [POPSpringAnimation animation];...[layer pop_addAnimation:anim forKey:@"myKey"];

可以根據開始動畫時傳入的鍵,來移除對應的動畫:

[layer pop_removeAnimationForKey:@"myKey"];

開始動畫時傳入的鍵,也可以用來查詢是否存在某個動畫.更新一個正在執行的動畫的 toValue,可以無縫實現動畫效果間的過渡:

anim = [layer pop_animationForKey:@"myKey"];if (anim) {  /* 更新toValue為一個新值. */  anim.toValue = @(42.0);} else {  /* 創建并開始一個新的動畫. */  ....}

上面的例子是以圖層為例.Pop是以NSObject的擴展方式實現的.也就是說: 任何NSObject及其子類都可以通過Pop添加動畫效果.

動畫類型

有四種動畫類型: 彈性動畫,漸弱動畫,基礎動畫和自定義動畫.

彈性動畫

彈性動畫,可以給對象一個有活力的彈跳效果.下面的例子中,我們使用彈性動畫來使圖層的邊框值從它的當前值變化為(0, 0 ,400, 400):

POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 400, 400)];[layer pop_addAnimation:anim forKey:@"size"];

漸變動畫

漸變動畫,可以讓對象緩慢地停止變化.下面的例子,我們使圖層的橫坐標從當前值以1000像素每秒的速度漸變:

POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];anim.velocity = @(1000.);[layer pop_addAnimation:anim forKey:@"slide"];

基礎動畫

基礎動畫可以用來在指定的時間段動態改變屬性的值.在默認的時間周期內動態讓視圖的透明度從0.0變化到1.0來實現淡入的效果:

POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaSEOut];anim.fromValue = @(0.0);anim.toValue = @(1.0);[view pop_addAnimation:anim forKey:@"fade"];

自定義動畫

POPCustomAnimation 用來創建自定義動畫和過渡效果.它通過管理 CADisplayLink 來管理時間與動畫的關聯性.更多細節,詳見頭文件.

動畫屬性

動畫屬性由POPAnimatableProperty類管理,用來指定在哪個屬性上應用動畫效果.在下面的例子中,我們創建了一個彈性動畫,并且顯示設置動畫屬性為與-[CALayer bounds]對應的屬性:

POPSpringAnimation *anim = [POPSpringAnimation animation];anim.property = [POPAnimatableProperty propertyWithName:kPOPLayerBounds];

這個框架愛預先實現了了許多圖層和視圖共用的動畫屬性,你可以在自己的項目中直接使用.你也可以通過創建POPAnimatableProperty類的實例,來創建一個自定義的動畫屬性.下面的例子中,我們定義了一個自定義的volume動畫屬性:

prop = [POPAnimatableProperty propertyWithName:@"com.foo.radio.volume" initializer:^(POPMutableAnimatableProperty *prop) {  // 讀取動畫屬性的值  prop.readBlock = ^(id obj, CGFloat values[]) {    values[0] = [obj volume];  };  // 設置動畫屬性的值.  prop.writeBlock = ^(id obj, const CGFloat values[]) {    [obj setVolume:values[0]];  };  // 力學上的臨界值  prop.threshold = 0.01;}];anim.property = prop;

系統預定義的動畫屬性也是由上面例子的機制定義的,自定義動畫屬性時,很有借鑒價值.完整的預定義的動畫屬性列表和他們實現的具體細節參見POPAnimatableProperty.h:

/** 圖層(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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南安市| 定安县| 襄垣县| 自治县| 儋州市| 湘潭县| 余江县| 柳州市| 洱源县| 洛宁县| 宽城| 新平| 澄城县| 乌苏市| 乐都县| 秦安县| 化隆| 安徽省| 阿拉善盟| 北川| 胶南市| 怀化市| 邢台市| 金门县| 福清市| 蒲江县| 福泉市| 体育| 高淳县| 衡水市| 乾安县| 方山县| 神池县| 黄陵县| 襄城县| 寿阳县| 高州市| 延长县| 特克斯县| 蚌埠市| 卓资县|