如何将 BLE RSSI 显示为信号强度条 iPhone
How to display BLE RSSI as signal strength bars iPhone
我正在编写一个显示 BLE 设备列表的应用程序。
我想以图形方式显示每个设备的信号强度,例如蜂窝信号条,而不是实际数字。
有人知道怎么做吗?
1) 你可以做一些快速而肮脏的事情,比如创建一堆代表每个条的 UIView,然后 hide/show 它们取决于 BLE 设备的强度。
2) 或者您可以创建一堆图像并根据信号强度选择合适的图像进行显示。
您可以使用 UIImageView
只渲染图像的一部分。让我们分解一下:
- 有一张显示完整条形图的图像;
- 放置一个
UIImageView
以在屏幕上显示您的图像;
- 创建一个
CGRect
来切割图像的 部分 并将其设置为 your_image_view.layer.contentsRect
- 请注意 1.0 = 100%;
- 使用
CGRect
; 控制将显示图像的哪些部分
示例:
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 的文档应该会对您有所帮助。
我正在编写一个显示 BLE 设备列表的应用程序。
我想以图形方式显示每个设备的信号强度,例如蜂窝信号条,而不是实际数字。
有人知道怎么做吗?
1) 你可以做一些快速而肮脏的事情,比如创建一堆代表每个条的 UIView,然后 hide/show 它们取决于 BLE 设备的强度。
2) 或者您可以创建一堆图像并根据信号强度选择合适的图像进行显示。
您可以使用 UIImageView
只渲染图像的一部分。让我们分解一下:
- 有一张显示完整条形图的图像;
- 放置一个
UIImageView
以在屏幕上显示您的图像; - 创建一个
CGRect
来切割图像的 部分 并将其设置为your_image_view.layer.contentsRect
- 请注意 1.0 = 100%; - 使用
CGRect
; 控制将显示图像的哪些部分
示例:
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 的文档应该会对您有所帮助。