最近忙完了,開始看一些iOS相關(guān)的第三方框架
于是就看到了facebook出品的 POP 這個第三方動畫庫电禀。
POP官方的Github地址是這個 https://github.com/facebook/pop
集成的方式有兩種熟尉,一種是cocoapods集成慷荔,還有一種是手動集成耗跛。
由于我的項目沒有用cocoapods管理菊碟,所以cocoapods集成的上網(wǎng)查一查就很簡單也很詳細(xì)节芥,所以我在這里就不介紹了。
下面詳細(xì)介紹一下我手動集成 POP 的方法以及踩到的坑
1.在github上下載pop逆害,然后把文件中的pop文件夾拖到自己項目里
拖進來之后command + B你會發(fā)現(xiàn)會有很多報錯
所以我們一個一個來
emmmmmmm头镊,由于我在網(wǎng)上看到的手動集成方法最靠近現(xiàn)在的也是15年的了(可能自己找資料的途徑不太對),所以我看了他們的報錯跟我有一定的區(qū)別魄幕,所以我就自己在處理這些報錯了相艇。
第1個報錯:
我這里報錯是Unkown type name "NNString"
度娘了一下之后發(fā)現(xiàn)是OC和C或者C++預(yù)編譯問題,我們在PCH文件上加上這段話
#ifdef __OBJC__
#import "POP.h"
#endif
編譯之后就會發(fā)現(xiàn)上面這個報錯沒了
還有一種解決方法我沒試過纯陨,想試一下的朋友可以參考一下這個博主的博客https://www.cnblogs.com/geweb/p/Unknown_type.html
第2個報錯:
當(dāng)上面第一個問題解決之后重新編譯工程坛芽,會出現(xiàn)'pop/PopDefines.h' file not found 這個報錯
這個問題我在網(wǎng)上查了一下
那是由于你下載popSDK是使用cocopod是集成的留储,他會將pop認(rèn)為是系統(tǒng)的包。但是你手動導(dǎo)入的SDK咙轩,系統(tǒng)會認(rèn)為是第三方SDK获讳,你需要導(dǎo)入你自己SDK的路徑。
以上原話來自http://www.reibang.com/p/856a8a42c6c6
解決方法就比較繁瑣活喊,那就是將pop文件里的類似這樣的導(dǎo)入 #import <pop/POPDefines.h> 全部改為 #import "POPDefines.h"丐膝,全部加起來大概改了幾十個吧。改完之后如下圖:
注意這個只是pop.h里面的钾菊,其他文件的導(dǎo)入也要相應(yīng)的改掉帅矗。
我覺得這個方法太繁瑣了,所以查了一下其他的解決方法煞烫,根據(jù)其他的方法损晤,修改了build setting - framework searh path 里的地址,把pop文件夾拖進去红竭,也不行尤勋,所以就暫時直接采用了上述的辦法。
如果有覺得麻煩的小伙伴可以留言茵宪,我這里有一份已經(jīng)改好了并且可以用的最冰。
到了這步之后,再重新編譯稀火,就會發(fā)現(xiàn)編譯成功了暖哨!大功告成嘿嘿。
POP Animation 的簡單使用
pop框架如果做一些簡單動畫的話用起來還是相當(dāng)簡單易懂的凰狞。
由于我用到的是基本彈窗的動畫篇裁,所以就用了它里面的彈簧效果
具體demo:
POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
// 執(zhí)行動畫的view的初始大小
scaleAnimation.velocity = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)];
// 執(zhí)行動畫的view的結(jié)束大小
scaleAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)];
scaleAnimation.springBounciness = 1.0f;
scaleAnimation.springSpeed = 1.f;
[scaleAnimation setCompletionBlock:^(POPAnimation *animation, BOOL finished){
}];
[_popView.layer pop_addAnimation:scaleAnimation forKey:@"ScaleXY"];
_popView就是要執(zhí)行動畫效果的自定義視圖,可以是彈窗赡若,也可以是按鈕啊之類的达布,具體看自己的需求。
注意一下就是_popView要一定要實例化之后給適配完逾冬,下面的代碼才能看到效果黍聂。
具體效果就是下面這樣子:
雖然自己也封裝過一些彈窗,不過總覺得性能上跟這些成熟穩(wěn)定的三方庫有一定的差距身腻,也算是閑暇時間學(xué)習(xí)一下产还。
第一次寫簡書,有不足的或者哪里錯了的希望大家能夠指出來嘀趟,我會去看看的脐区,畢竟我也是個iOS小菜雞哈哈哈哈虛心學(xué)習(xí)很重要。