一款适用于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渲染,性能极高,同时渲染5000条弹幕也感知不会卡顿。 可以自定义各种属性动画及路径动画,满足您对动画的舌头需求。
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)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