UIView Изменение цвета фона со временем - PullRequest
0 голосов
/ 21 октября 2018

В моем приложении я хочу, чтобы в разделе был UIView, чтобы цвета менялись со временем.Возможно ли это и могу ли я сделать это в расширении?Заранее спасибо !!

Как:
от восхода до 10 - цвет
от 10 до 1 - цвет
от 1 до 4 - цвет
и т. Д. *

1 Ответ

0 голосов
/ 21 октября 2018

Нет волшебного способа достичь этого.Каким-то образом вам нужно будет сделать следующее:

import UIKit

private extension UIColor {

    static func viewBackground(forTime time: Date) -> UIColor {
        let earlyMorningBoundary = Calendar.current.date(bySettingHour: 6, minute: 0, second: 0, of: time)!
        let morningBoundary = Calendar.current.date(bySettingHour: 10, minute: 0, second: 0, of: time)!
        let lunchtimeBoundary = Calendar.current.date(bySettingHour: 13, minute: 0, second: 0, of: time)!
        let afternoonBoundary = Calendar.current.date(bySettingHour: 16, minute: 0, second: 0, of: time)!
        let eveningBoundary = Calendar.current.date(bySettingHour: 19, minute: 0, second: 0, of: time)!
        if time < earlyMorningBoundary {
            return UIColor.earlyMorningColor
        } else if time < morningBoundary {
            return UIColor.morningColor
        } else if time < lunchtimeBoundary {
            return UIColor.lunchtimeColor
        } else if time < afternoonBoundary {
            return UIColor.afternoonColor
        } else {
            return UIColor.eveningColor
        }
    }
}

extension UIView {

    func updateBackgroundForCurrentTime() {
        self.backgroundColor = .viewBackground(forTime: Date())
    }
}

extension UIColor {

    static var earlyMorningColor: UIColor {
        return UIColor(red: 60/255, green: 207/255, blue: 228/255, alpha: 1.0)
    }

    static var morningColor: UIColor {
        return UIColor(red: 5.1/255, green: 25.9/255, blue: 87.5/255, alpha: 1.0)
    }

    static var lunchtimeColor: UIColor {
        return UIColor(red: 0/255, green: 88.2/255, blue: 45.9/255, alpha: 1.0)
    }

    static var afternoonColor: UIColor {
        return UIColor(red: 0/255, green: 64.7/255, blue: 33.7/255, alpha: 1.0)
    }

    static var eveningColor: UIColor {
        return UIColor(red: 49/255, green: 54/255, blue: 57/255, alpha: 1.0)
    }
}

Затем вам необходимо выяснить, когда вам следует звонить updateBackgroundForCurrentTime, чтобы обновить цвет фона.Это когда представление создается?Когда приложение выходит на передний план?Будете ли вы ставить в очередь локальное уведомление, чтобы сообщить вам об обновлении?Все это будет зависеть от того, как долго, по вашему мнению, будет продолжаться сеанс приложения.Я бы начал с обновления цвета при запуске или выводе приложения на передний план и пошел оттуда.

...