我正在为iPhone做一个圣经阅读器应用程序,我想实现一个“夜间模式”。
我已经完成了夜间模式的按钮,阅读窗格是一个桌面视图,但其他页面也在我的应用程序中,我需要的是当夜间模式打开时,视图的enire背景必须更改为黑色和文字表示白色。
我在tableview的背面放置了一个黑暗的渐变图像视图并将其设置为隐藏,当点击按钮时,我执行darkgradient.hidden = no;
以便png将取消隐藏并在tableview后面显示为黑色。
我把tableview背景作为清晰的颜色。 tableview单元格中有一个名为chapterandverse标签的标签。我将此代码放在tableview中,以更改背景并更改cellForRowAtIndexpath:
if (imagedarkbackground.hidden == NO) {
cell.chapterAndVerse.backgroundColor= [UIColor blackColor];
cell.chapterAndVerse.textColor = [UIColor whiteColor];
table.backgroundColor = [UIColor blackColor];
cell.textLabel.textColor = [UIColor whiteColor];
}
else{
//default
}
问题是,当我切换到另一个页面并返回到tableview页面时,黑色背景变为默认值。我知道这不是在应用程序中设置nightmode的正确方法,而且它也会更改tableview背景而不是整个应用程序背景视图,所以我该如何以正确的方式执行此操作?
答案 0 :(得分:0)
如果背景颜色被重置为默认值,则可能会卸载UITableViewController子类。你是把它作为模态视图显示出来的吗?如果是这样,您必须将夜间模式设置保存在其他位置,例如应用委托上的BOOL属性。然后在viewDidLoad中,检查该属性并相应地设置背景颜色。更好的是,保存值,这样如果你的应用程序退出,当它返回时,夜间模式仍然设置为相同的东西,但如果自上次使用该应用程序以来已经过了很多时间,可能不会。
更好的是,根据时钟时间自动设置夜间模式。再次更好的是,使用来自摄像头的数据来检测环境光水平。但在任何一种情况下,覆盖的按钮也很好。