Как обновить фоновое изображение в зависимости от близости маяка? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу изменить фоновое изображение своего приложения в зависимости от близости маяка. Если я запускаю приложение (см. Код ниже) на своем 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()#>
        }
    }
}

1 Ответ

0 голосов
/ 16 мая 2019
  • Вы вставляете все изображения с нулевым индексом. Сначала удалите предыдущее изображение, как если бы оно содержало какое-либо изображение, такое как переключение между близостью, вставит много изображений в ноль, и появится последнее.Или просто добавьте его как подпредставление и перенесите на передний план (если необходимо) вместо вставки в ноль.
    • Цвет работает, потому что у вас будет один цвет.Изображения добавляются по одному.для лучшего понимания попробуйте просмотреть отладку.
...