iOS開發Facebook POP動效庫使用教程

来源:http://www.cnblogs.com/jgCho/archive/2016/01/27/5162664.html
-Advertisement-
Play Games

如果說Origami這款動效原型工具是Facebook Paper的幕後功臣,那麼POP便是Origami的地基。感謝Facebook開源了POP動效庫,讓人人都能製作出華麗的動效。我們只需5步,便能搞定酷炫的動效。步驟1: 安裝使用CocoaPods安裝POP,只需要在Podfile中加入這麼一行...


如果說Origami這款動效原型工具是Facebook Paper的幕後功臣,那麼POP便是Origami的地基。感謝Facebook開源了POP動效庫,讓人人都能製作出華麗的動效。我們只需5步,便能搞定酷炫的動效。

步驟1: 安裝

 

使用CocoaPods安裝POP,只需要在Podfile中加入這麼一行:

pod 'pop', '~> 1.0'

或者如果想要手動添加,那麼參考POP Github中的描述:

除此之外,你還可以將工程添加到工作區裡面,然後採用提供的配製文件。或者手動複製POP子目錄下的文件,複製到工程裡面。如果選擇手動安裝,確保C++標準庫鏈入其中,只需要在項目鏈接標記中包含 -lc++即可。

Facebook POP動效庫:https://github.com/facebook/pop

如果不懂得如何使用CocoaPods,請看這個教程:

CocoaPods簡易使用指南

步驟2: 將POP加入到工程中

 

在工程開頭添加如下:

#import <POP/POP.h>

 

步驟 3:創建動效

 

使用POP可以創建4類動效:: spring, decay, basic and custom.

Spring (彈性)動效可以賦予物體愉悅的彈性效果
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
Decay (衰減) 動效可以用來逐漸減慢物體的速度至停止
POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
Basic(基本)動效可以在給定時間的運動中插入數值調整運動節奏
POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
Custom(自定義)動效可以讓設計值創建自定義動效,只需簡單處理CADisplayLink,並聯繫時間-運動關係

在這片簡短教程中將不涵蓋自定義動效,大家可以看看POP的Github來獲取更多進階知識https://github.com/facebook/pop

步驟4: 給動效添加屬性

 

Pop 讓我們可以這樣設置動效的屬性:

velocity : anim.velocity @(1000.);

fromValue: anim.fromValue @(0.0);

toValue: anim.toValue @(1.0);

bounciness: anim.springBounciness 10;

步驟5 :動起來

 

若想讓物體動起來,只需要添加步驟3所創建的東西到視圖。

[self.yourView.layer pop_addAnimation:anim forKey:@"typeANameForYourAnimationHere"];

這就是POP簡單創建動效的教程。大家可以看看例子來理解如何創建動效。爭取努力變得技藝純熟吧。

 

步驟6:測試效果

Pop有相關文件擴展作為測試。安裝測試文件的方法是用終端進入POP根目錄,然後輸入

pod install

必須確保CocoaPods已經安裝

 

# 動效案例

 

這個動效將按鈕縮小到一半

POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY]; 
scaleAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(0.5, 0.5)]; 
scaleAnimation.springBounciness = 10.f; 
[self.button.layer pop_addAnimation:scaleAnimation forKey:@"scaleAnim"];

 

這個動效將按鈕旋轉

POPSpringAnimation *rotationAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerRotation];
rotationAnimation.beginTime = CACurrentMediaTime() + 0.2;
rotationAnimation.toValue = @(1.2); 
rotationAnimation.springBounciness = 10.f; 
rotationAnimation.springSpeed = 3; 
[button.layer pop_addAnimation:rotationAnimation forKey:@”rotationAnim”];

 

這個改變透明度:

POPBasicAnimation *opacityAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity];
opacityAnimation.toValue = @(0.5);
[animView.layer pop_addAnimation:opacityAnimation forKey:@"opacityAnimation"];

#更多

 

Pop Github : https://github.com/facebook/pop

Popping -Pop案例 : https://github.com/schneiderandre/popping

POP使用教程: https://github.com/maxmyers/FacebookPop

 

中文教程

 

POP使用指南(來自Cocohina)

使用FaceceBook的Pop框架替換UIScrollView的減速動畫(來自Cocohina)

Facebook POP 進階指南(來自Cocohina)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var val=$('input:radio[name="sex"]:checked').val();附三種方法都可以:$('input:radio:checked').val(); $("input[type='radio']:checked").val();$("input[name='rd.....
  • 適合EXT keycode的查詢A 65B 66C 67D 68E 69F 70G 71H 72I 73J 74K 75L 76M 77N 78O 79P 80Q 81R 82S 83T 84U 85V 86W 87X 88Y 89Z 900 4...
  • 設置全站的字體一直是一個簡單而又不簡單的事,因為深入下去,這裡面牽扯到太多的東西。本文主要是想說說對於一個普通的網站,如何根據自己的需求選擇字體。1、必備知識首先,我們應該明確,並不是你設置了這種字體,用戶電腦便會以這種字體顯示。如果用戶電腦沒有安裝這種字體,那麼它便會以你設置的第二種字體來渲染。看...
  • 語義化這個詞我想大家都看到了無數次,特別是在一些招聘廣告上。其實我自己也是,不過每次看到都覺得是那些招聘公司複製的,其實他們根本說不清語義化是什麼,而且也根本不看重。所以我一直也沒把這東西當回事過。然而最近當我再次看到這個詞時,我想我應該好好思考下這問題了。就寫篇博客記錄下。一、什麼是語義化?在解釋...
  • 效果:http://hovertree.com/texiao/css3/1/本效果主要使用text-shadow實現.參考:http://hovertree.com/h/bjaf/css3_text_effect.htm代碼如下:超炫CSS3文字特效集錦DEMO演示 - 何問起OutlinedAOu...
  • DOM操作分為3個方面:DOM Core 任何一種支持DOM Core的語言都可以使用它,比如getElementById就是DOM Core操作HTML-DOM 只能用來處理web文檔CSS-DOM 針對CSS的操作關於jQuery中的DOM操作查找節點可以很輕易通過就jQuery選擇器來找到.....
  • 引用類型的值(對象)是引用類型的一個實例,在ES中引用類型是一種數據結構,將數據和功能組織在一起。引用類型有時候也被稱之為對象定義,因為他們描述的是一類對象所具有的屬性和方法。Object類型兩種創建方式1 new Object()var person = new Object();person.n...
  • 嚴格模式是一種將更好的錯誤檢查引入代碼中的方法。在使用嚴格模式時,無法使用隱式聲明的變數、將值賦給只讀屬性或將屬性添加到不可擴展的對象等1、嚴格模式的目的1)消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為 2)消除代碼運行的一些不安全之處,保證代碼運行的安全 3) 提...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...