一款適用於iOS的高性能彈幕渲染引擎。同時渲染5000條彈幕也非常流暢,輕量級,可擴展,可以添加任何你想要的動畫!超高性能,簡單易用! OCBarrage
底層使用Core Animation
框架驅動,使用Core Graphics
繪製,GPU渲染,超高效能!您可以添加任何您想要的動畫,滿足您對動畫的多樣化需求!
pod 'OCBarrage'
加入您的 Podfile 中。pod install
或pod update
。OCBarrage.h
。OCBarrage
子目錄中的所有檔案。OCBarrage.h
。iOS幕彈庫OCBarrage-如何hold住每秒5000個巨量彈幕
該函式庫需要iOS 8.0+
和Xcode 8.0+
。
OCBarrage 是根據 MIT 許可證提供的。有關詳細信息,請參閱許可證文件。
QQ群:263384911
iOS幕彈庫OCBarrage,同時渲染5000條彈幕也不卡,量輕,可擴展,高度自訂動畫,超性能,簡單易上手。 OCBarrage
底層使用Core Animation
驅動、 Core Graphics
繪製、GPU渲染,效能極高,同時渲染5,000個彈幕也感知不會卡頓。 可自訂各種屬性動畫及路徑動畫,滿足您對動畫的舌頭需求。
pod 'OCBarrage'
。pod install
或pod update
。OCBarrage.h
。你可以在iOS彈幕庫OCBarrage-如何保持住每秒5000個巨量彈幕查看程式碼結構、原理及實作。 有問題大家可以留言!
為新的彈幕類型建立一個資料模型,例如: OCBarrageWalkBannerDescriptor
。 該類別必須繼承自OCBarrageDescriptor
類別。
這樣就創造了新的彈幕類型的資料模型類,我們可以在這個類別裡面加入新的彈幕屬性例如: bannerLeftImageSrc
、 bannerMiddleColor
、 bannerRightImageSrc
等等。
為新的彈幕類型建立資料展示視圖,例如: OCBarrageWalkBannerCell
。 這個新的彈幕類型的顯示視圖必須繼承自OCBarrageTextCell
類別。
在這個新的展示視圖裡我們可以新增展示資料對應的子視圖,例如: leftImageView
, middleImageView
, rightImageView
。 並為這個新的視圖類別新增一個對應的資料模型類別的屬性OCBarrageWalkBannerDescriptor *walkBannerDescriptor
來傳遞資料。
OCBarrageWalkBannerCell
的- (void)setBarrageDescriptor:(OCBarrageDescriptor *)barrageDescriptor
方法。 並且只能在這個方法裡為walkBannerDescriptor
屬性賦值,在這個方法裡必須要呼叫[super setBarrageDescriptor:barrageDescriptor]
方法,否則barrageDescriptor
屬性將沒有值,且部分屬性設定將不生效。 OCBarrageCell
本身有一個barrageDescriptor
屬性引用資料模型。 但為了方便拓展,我們選擇在第二步驟為OCBarrageWalkBannerCell
增加一個新的資料屬性walkBannerDescriptor
。 實質上OCBarrageWalkBannerCell
的barrageDescriptor
屬性和walkBannerDescriptor
指向的是同一個walkBannerDescriptor
物件。重寫新視圖OCBarrageWalkBannerCell
的- (void)updateSubviewsData
方法。 渲染引擎在渲染渲染幕視圖之前會自動呼叫這個方法。 我們可以在這個方法裡為子視圖設定數據
。
在- (void)updateSubviewsData
步驟設定好子視圖的資料之後就可以計算並設定子視圖- (void)layoutContentSubviews
大小和位置。 - (void)updateSubviewsData
方法之後自動呼叫- (void)layoutContentSubviews
方法,該方法必須在主執行緒執行。
在佈局好子視圖的位置之後,如果想要提高性能可以調用- (void)convertContentToImage
方法,將可以圖像化的視圖合成一張圖片顯示在單元格的層上,渲染引擎會在調用- (void)layoutContentViews
方法之後自動呼叫- (void)convertContentToImage
方法,該方法必須在主執行緒執行。
如果不想將子視圖的內容轉換成圖片只需替換- (void)convertContentToImage
並留空即可:
如果想要進一步優化記憶體和效能,可以重寫- (void)removeSubViewsAndSublayers
方法,刪除先前新增的 subView 和 sublayer,將子視圖設為nil
。
如果不僅想提高效能,又有一些無法圖片化的內容(如:gif)需要顯示,可以重寫- (void)removeSubViewsAndSublayers
方法,但不調用[super removeSubViewsAndSublayers]
方法,並網格的刪除一些子子視圖,保留一些風景。
如果不想刪除子視圖,則替換- (void)removeSubViewsAndSublayers
方法並留空即可:
此專案最低支援iOS 8.0
和Xcode 8.0
。
為了確保您在使用的過程中盡量減少不必要的麻煩,強烈建議您查看詳細文檔
OCBarrage 使用 MIT 許可證,詳情請參閱 LICENSE 文件。
歡迎加群討論QQ群:263384911