VOXHistogramView 0.1.0

VOXHistogramView 0.1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年6月

Nickolay Sheika 维护。



 
依赖
macros_blocks= 0.0.3
FrameAccessor= 2.0
 

  • 作者:
  • Nickolay Sheika

在您的项目中展示直方图的最佳方式。自由软件,太棒了!

该软件用于我们的 VOX 播放器

Demo

用法

您可以用两种方式使用我们的软件。

1. VOXHistogramControlView

这是一个封装整个直方图渲染过程和播放控制的视图。

  • 处理用户的触摸并告知代理关于所有事件。
  • 支持刮擦速度,可以精确控制音频轨迹的回放。
  • 可以动画显示直方图的显示和隐藏。
  • 控制播放和下载进度。
  • 控制所有直方图渲染过程。
  • 可以在直方图的底部显示滑块视图。

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;

2. 纯 VOXHistogramView。

如果 VOXHistogramControlView 不符合您的需求,您可以使用所有组件分开。

让我们描述它们:

VOXHistogramView

允许您显示渲染的直方图图像,并提供了播放进度和下载进度的控制。它支持自动布局,并可以从Storyboard中实例化。

CGRect frame = /* Setup histogram frame */
VOXHistogramView *histogramView = [[VOXHistogramView alloc] initWithFrame:frame];

UIImage *image = /* Render histogram image */
histogramView.image = image;
VOXHistogramRenderer

这是主要的劳动者 - 它用于从级别数组渲染直方图图像。渲染在后台线程中进行,不会阻塞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 */
}];
VOXHistogramLevelsConverter

这个类允许您在后台将级别数组进行转换。例如,您从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时自行计算(请查看示例项目)。

路线图

  1. 更多的单元测试。
  2. 分离的VOXHistogramControlView组件。
  3. 在VOXHistogramLevelsConverter中的速度提升。

示例

要运行示例项目,请克隆存储库,并首先从示例目录运行pod install。

要求

  • iOS 7.1及更高版本
  • ARC

安装

可以通过CocoaPods获得VOXHistogramView。要安装它,只需将以下行添加到您的Podfile中

pod "VOXHistogramView"

作者

Nickolay Sheika,[email protected]

许可证

VOXHistogramView可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。"VOX"、"VOX Player"、"LOOP for VOX"是美国Coppertino Inc的注册商标。