我的用戶界面在特定時間每天都會發生完整的顏色變化。爲了解決這個問題,我創建了一個UIColor
extension
,並在每種顏色上添加了一個switch
,用於打開客戶端當前的本地時間。因此,只要視圖調用顏色,它就會根據一天中的時間使用適當的顏色。下面是一個例子:有沒有辦法在進入前景時強制全局刷新視圖?
的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)
}
}
除了當應用程序進入前景中,當應用程序啓動時,它也更新它的應用程序的委託更新currentHour
:
在應用程序代表
func applicationWillEnterForeground(_ application: UIApplication) {
// update current hour
updateCurrentHour()
}
唯一缺少的是當應用程序進入前臺時強制刷新整個視圖控制器,以使其中的視圖被迫調用UIColor
並獲取其合適的顏色。
如何強制視圖控制器「刷新」其整個視圖?或者,有沒有辦法強制刷新
UIColor
上的視圖(因爲它們是唯一需要更新顏色的對象)?如果用戶深入導航堆棧,將應用程序置於後臺,然後進入前臺,並且該視圖控制器(在堆棧的頂部)被成功刷新,當用戶彈出時會發生什麼下了堆棧?那些視圖控制器是否刷新?
還是有辦法強制一個「全局刷新」,不會失去用戶在他們的堆棧位置?
也許致電layoutSubviews – BennX