【发布时间】:2019-03-07 10:34:10
【问题描述】:
我正在开发一个使用 BLE 连接到微控制器的应用程序。 我目前已经启动并运行了所有这些,还可以从 BLE 链接读取 RSSI。我能够很好地显示 RSSI,以确定信号强度。但我想设计标签以根据信号强度改变颜色。 0 到 -30(绿色)、-30 到 -60(黄色)和 -60 到 -90(红色)。我对 swift 很陌生。但是我做了一个 Range 测试视图控制器。
显然我的代码只会更新一次颜色。我可能缺少一些非常简单的东西,我只是无法弄清楚。此外,可能一个 while 循环或 for-in 可以解决这个问题。但到目前为止,我还没有把它弄好。
无论如何,如果有人对我应该采取的路线提出建议,那将不胜感激!
代码如下:
@IBOutlet weak var RSSILabel: UILabel!
@IBOutlet weak var deviceLabel: UILabel!
var timer = Timer()
var progressHUD: MBProgressHUD?
func serialDidChangeState() {
}
func serialDidDisconnect(_ peripheral: CBPeripheral, error: NSError?)
{
}
override func viewDidLoad() {
super.viewDidLoad()
if (serial?.isReady)! {
deviceLabel.text = serial?.connectedPeripheral!.name
serial?.readRSSI()
readRssiTimer()
showRssiInLabel()
}
}
func readRssiTimer() {
self.timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (Timer) in
serial?.readRSSI()})
}
func showRssiInLabel(){
self.timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { (Timer) in
self.RSSILabel.text = serial?.realtimeRSSI.stringValue})
if (serial?.self.realtimeRSSI.intValue)! > -40 {
RSSILabel.textColor = UIColor.green
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
} else if (serial?.realtimeRSSI.intValue)! <= -40 && (serial?.realtimeRSSI.intValue)! > -70 {
RSSILabel.textColor = UIColor.yellow
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
} else if (serial?.realtimeRSSI.intValue)! <= -70 && (serial?.realtimeRSSI.intValue)! > -90 {
RSSILabel.textColor = UIColor.red
RSSILabel.font = UIFont(name: "HelveticaNeue", size: CGFloat(22))
self.view.addSubview(RSSILabel)
}
}
【问题讨论】:
标签: ios swift label uilabel rssi