swift - 如何根据信标的接近程度刷新背景图像?

标签 swift xcode beacon proximity

我想根据信标的接近程度更改应用程序的背景图像。如果我在 iPhone 上运行该应用程序(请参阅下面的代码),它会根据距离正确显示背景图像 - 但如果我移动,它不会更改/刷新背景图像。 我尝试使用相同的背景颜色(请参见下面的代码)并且它有效:应用程序根据信标的接近程度更改其背景颜色,如果我正确移动它会更改/刷新背景颜色。只是背景图像无法正常工作。

如何强制背景图像正确刷新?

func updateDistance(_ distance: CLProximity) {
    UIView.animate(withDuration: 0.8) {
        switch distance {
        case .unknown:
            let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            backgroundImage.image = UIImage(named: "1.jpg")
            //backgroundImage.reloadInputViews()
            backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        //print("nothing here..")
        case .far:
            let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            //backgroundImage.image = UIImage(named: "2.png")
            backgroundImage.image = UIImage(named: "3.png")
            //backgroundImage.reloadInputViews()
            backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        case .near:
            let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            backgroundImage.image = UIImage(named: "4.png")
            //backgroundImage.reloadInputViews()
            backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        case .immediate:
            let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            backgroundImage.image = UIImage(named: "5.jpg")
            //backgroundImage.reloadInputViews()
            backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        @unknown default:
            // fatalError()
            let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            backgroundImage.image = UIImage(named: "6.jpg")
            //backgroundImage.reloadInputViews()
            backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        }
    }





func updateDistance(_ distance: CLProximity) {
    UIView.animate(withDuration: 0.8) {
        switch distance {
        case .unknown:
            self.view.backgroundColor = UIColor.gray
            print("nothing here..")
        case .far:
            self.view.backgroundColor = UIColor.blue
        case .near:
            self.view.backgroundColor = UIColor.orange
        case .immediate:
            self.view.backgroundColor = UIColor.red
//          self.sendUserNotification()
        @unknown default:
            <#fatalError()#>
        }
    }
}

最佳答案

  • 您将在零索引处插入所有图像,首先删除前一个图像,就好像它包含任何图像一样,在邻近度之间切换会插入许多图像,所有图像都为零,最后一个将出现。或者只需将其添加为 subview 并将其置于前面(如果需要),而不是在零处插入。
    • 颜色有效,因为您的 View 将只有一种颜色。图片正在一一附加。为了更好地理解,请尝试查看调试。

关于swift - 如何根据信标的接近程度刷新背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56165678/

相关文章:

ios - UITableView 不显示数据并且不添加数据

xcode - 未找到此可执行文件的有效配置文件 IOS 12 但仍在 IOS 11、xcode 10 中启动

iphone - 如何从 .ipa 文件获取源代码?

iphone - 由于内存问题/MBProgressHUD 指示器导致应用程序崩溃

ios - Kontakt.io iOS - 按名称识别信标

ios - 如何用for循环添加多个字典?

swift - 当表格单元格出现时,UILabel 不调整大小

ios - swift init 可选的数组包装

android - iBeacon 如何将数据发送到后端或 api

使用 CLLocationManager 的 Swift 3 信标监控