私のUIは、特定の時間に毎日完全な色の変更を受けます。これを処理するために、私はUIColor
extension
を作成し、クライアントの現地時間を切り替える各色にswitch
を追加しました。したがって、ビューによってカラーが呼び出されると、時刻に応じて適切なカラーが使用されます。次に例を示します。フォアグラウンドに入るときに強制的にビューをグローバルに更新する方法はありますか?
次の場合、アプリ起動アプリデリゲートにcurrentHour
を更新することに加え
UIColorの拡張
// text color
public class var text: UIColor {
switch currentHour {
case 0...5, 20...23: // from 8 PM to 5:59 AM
return UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1)
default: // from 6 AM to 7:59 PM
return UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 1)
}
}
アプリがフォアグラウンドに入るとき、それはまた、それを更新しますアプリデリゲートで
func applicationWillEnterForeground(_ application: UIApplication) {
// update current hour
updateCurrentHour()
}
唯一欠けているのは、アプリケーションがフォアグラウンドに入るときにView Controller全体を強制的にリフレッシュすることで、その中のビューがUIColor
にコールされ、適切な色が得られるようにすることです。
ビューコントローラに強制的にビュー全体を「更新」させますか?または、
UIColor
(カラー更新が必要な唯一のオブジェクトであるため)を呼び出すビューだけを強制的にリフレッシュする方法はありますか?ユーザーがナビゲーションスタックの奥深くにいる場合、アプリケーションをバックグラウンドに配置してフォアグラウンドに入り、そのビューコントローラ(スタックの一番上)が正常にリフレッシュされます。ユーザーがポップバックしたときスタックを下ろす?それらのビューコントローラはリフレッシュされましたか?
スタック内のユーザーの位置を失わない「グローバルリフレッシュ」を強制する方法はありますか?
多分call layoutSubviews – BennX