如何将 BLE RSSI 显示为信号强度条 iPhone

How to display BLE RSSI as signal strength bars iPhone

我正在编写一个显示 BLE 设备列表的应用程序。

我想以图形方式显示每个设备的信号强度,例如蜂窝信号条,而不是实际数字。

有人知道怎么做吗?

1) 你可以做一些快速而肮脏的事情,比如创建一堆代表每个条的 UIView,然后 hide/show 它们取决于 BLE 设备的强度。

2) 或者您可以创建一堆图像并根据信号强度选择合适的图像进行显示。

3) 或者你可以走核心图形路线 (https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_paths/dq_paths.html#//apple_ref/doc/uid/TP30001066-CH211-TPXREF101)

您可以使用 UIImageView 只渲染图像的一部分。让我们分解一下:

  1. 有一张显示完整条形图的图像;
  2. 放置一个 UIImageView 以在屏幕上显示您的图像;
  3. 创建一个 CGRect 来切割图像的 部分 并将其设置为 your_image_view.layer.contentsRect - 请注意 1.0 = 100%;
  4. 使用 CGRect;
  5. 控制将显示图像的哪些部分

示例:

UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
CGRect frame = CGRectMake(/* x */ 0, /* y */ 0.5, /* width */ 1, /* height */ 0.25);
view.layer.contentsRect = frame;
view.image = [UIImage imageNamed:@"ble_bars.png"];

阅读有关 CGMakeRect and contentsRect 的文档应该会对您有所帮助。