测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2015年6月 |
由 Nickolay Sheika 维护。
依赖 | |
macros_blocks | = 0.0.3 |
FrameAccessor | = 2.0 |
在您的项目中展示直方图的最佳方式。自由软件,太棒了!
该软件用于我们的 VOX 播放器。
您可以用两种方式使用我们的软件。
这是一个封装整个直方图渲染过程和播放控制的视图。
VOXHistogramControlView 完全支持自动布局,可以从Storyboard中实例化,并且可以通过IBInspectable属性设置许多参数。
这就是我们在 VOX 播放器项目中使用直方图的方式。
CGRect frame = /* Build frame… */
VOXHistogramControlView *histogramControlView = [[VOXHistogramControlView alloc] initWithFrame:frame];
histogramControlView.delegate = self;
NSArray *levels = /* Get levels from API or from player. It should be NSArray of NSNumbers from @0.0 to @1.0. */
histogramControlView.levels = levels;
如果 VOXHistogramControlView 不符合您的需求,您可以使用所有组件分开。
让我们描述它们:
允许您显示渲染的直方图图像,并提供了播放进度和下载进度的控制。它支持自动布局,并可以从Storyboard中实例化。
CGRect frame = /* Setup histogram frame */
VOXHistogramView *histogramView = [[VOXHistogramView alloc] initWithFrame:frame];
UIImage *image = /* Render histogram image */
histogramView.image = image;
这是主要的劳动者 - 它用于从级别数组渲染直方图图像。渲染在后台线程中进行,不会阻塞UI。
VOXHistogramRenderingConfiguration *renderingConfiguration = /* Setup rendering configuration… */
VOXHistogramRenderer *renderer = [VOXHistogramRenderer rendererWithRenderingConfiguration:renderingConfiguration];
NSArray *levels = /* Get levels from API or from player. It should be NSArray of NSNumbers from @0.0 to @1.0. */
[renderer renderHistogramWithLevels:levels completion:^(UIImage *image) {
/* Use histogram image */
}];
这个类允许您在后台将级别数组进行转换。例如,您从API中收到1000个级别,但您需要300个来在当前边界内显示VOXHistogramView。因此,您需要通过平均这些级别来转换这些级别。这是VOXHistogramLevelsConverter创建的目的。
VOXHistogramLevelsConverter *converter = [VOXHistogramLevelsConverter new];
NSArray *levels = /* Get levels from API or from player… */
[converter updateLevels:levels];
NSUInteger samplingRate = /* Calculate number of levels that histogram can display in current bounds */
/* Convert levels array to sampling rate and render histogram image */
[converter calculateLevelsForSamplingRate:samplingRate completion:^(NSArray *levelsResampled) {
/* Use resampled levels to render histogram image */
}];
要使用我们的库,您应该提供音频轨迹级别的数组。这是一个简单地包含从 @0.0 到 @1.0 的 NSNumbers 的 NSArray,代表某个时刻的声音级别。您可以从音频引擎(如 BASS)或API(如 Soundcloud)中获得这些级别。
您需要多少个级别?
这取决于多个参数,例如一个峰的宽度、峰之间的间距、当前VOXHistogramView的边界、设备屏幕缩放。为了方便起见,您可以使用VOXHistogramControlView中的maximumSamplingRate属性,或者在您使用纯VOXHistogramView时自行计算(请查看示例项目)。
要运行示例项目,请克隆存储库,并首先从示例目录运行pod install。
可以通过CocoaPods获得VOXHistogramView。要安装它,只需将以下行添加到您的Podfile中
pod "VOXHistogramView"
Nickolay Sheika,[email protected]
VOXHistogramView可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。"VOX"、"VOX Player"、"LOOP for VOX"是美国Coppertino Inc的注册商标。