推荐一个轮子:BarrageRenderer 一个 iOS 上的开源弹幕渲染库, readme 都是用中文写,很容易理解。
首先 ,下载下轮子,把BarrageRenderer/目录拖到你的工程文件夹下。
其次,在你的 桥接文件里
#import "BarrageRenderer.h"
然后你就可以在项目里使用这个轮子了。
接着说下怎么使用轮子: 当然在readme里有非常详细的介绍
上代码: 在你的VC 中使用
var renderer:BarrageRenderer!
// MARK: - 构建弹幕,添加到VC的view
func buildDanMu() {
self.renderer = BarrageRenderer.init()
self.renderer.canvasMargin = UIEdgeInsetsMake(SCREEN_WIDTH * 0.3, 10, 10, 10)
self.view.addSubview(renderer.view)
// 这两句相信你看的懂
let safeObj = NSSafeObject.init(object: self, withSelector: #selector(PlayViewController.autoSenderBarrage))
timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: safeObj, selector: #selector(NSSafeObject.excute), userInfo: nil, repeats: true)
}
// 这是自动发送的方法,这里判断下,限制屏幕上弹幕的数量
func autoSenderBarrage() {
let spriteNumber :NSInteger = renderer.spritesNumberWithName(nil)
if spriteNumber <= 50 {
renderer.receive(walkTextSpriteDescriptorWithDirection(BarrageWalkDirection.R2L.rawValue))
}
}
最精彩的部分来了,这里就是你想显示怎么样的弹幕。
func walkTextSpriteDescriptorWithDirection(direction:UInt) -> BarrageDescriptor{
let descriptor:BarrageDescriptor = BarrageDescriptor()
descriptor.spriteName = NSStringFromClass(BarrageWalkTextSprite.self)
descriptor.params["text"] = self.danmuText[Int(arc4random())%(self.danmuText.count)]
descriptor.params["textColor"] = UIColor(red: CGFloat(arc4random()%255) / 255, green: CGFloat(arc4random()%255) / 255, blue: CGFloat(arc4random()%255) / 255, alpha: 1)
descriptor.params["speed"] = Int(arc4random()%100) + 50
descriptor.params["direction"] = direction
return descriptor
}
在这里,离开界面的时候最好把弹幕停止,并且将弹幕的view从视图上移除
weakSelf!.renderer.stop() && weakSelf!.renderer.view.removeFromSuperview()
看一下效果图: