夜间模式

本文介绍了一种使用Objective-C实现应用程序夜间模式切换的方法。通过创建基类来统一管理UI的颜色变化,并利用NSNotification进行通知传递,使得所有继承自基类的视图控制器能够响应模式的变化。此外,还介绍了如何通过UIButton触发模式切换并利用NSUserDefaults保存用户的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

夜间模式:利用继承与NSUserDefaults
1.创建基类,负责夜间模式的转换
2.所有的类都继承于基类,基类的模式改变了,所有子类的模式也改变了
3.夜间模式触发的按钮发送通知
4.利用NSUserDefault把模式保存到本地
/*************基类.h***************/
#import "BaseViewController.h"

@interface BaseViewController ()

@end

@implementation BaseViewController

- (
void)viewDidLoad {
    [
super viewDidLoad];
   
// Do any additional setup after loading the view.
   
   
   
//父亲默认颜色
   
self.view.backgroundColor = [UIColor redColor];
   
self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
   
   
   
//注册通知
    [[
NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeColor:) name:@"changeColor" object:nil];
   
   
//判断模式
   
NSString *str = [[NSUserDefaults standardUserDefaults]objectForKey:@"night"];
   
if ([str isEqualToString:@"yes"]) {
       
self.view.backgroundColor = [UIColor lightGrayColor];
       
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    }
}
//接受通知触发的方法
-(
void)changeColor:(NSNotification *)notification
{
   
   
NSString *str = [[NSUserDefaults standardUserDefaults]objectForKey:@"night"];
   
if ([str isEqualToString:@"yes"]) {
       
self.view.backgroundColor = [UIColor lightGrayColor];
       
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    }
else
    {
       
self.view.backgroundColor = [UIColor redColor];
       
self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
    }

   
}
- (
void)didReceiveMemoryWarning {
    [
super didReceiveMemoryWarning];
   
// Dispose of any resources that can be recreated.
}
@end
/*************基类.h***************/

/*************夜间模式触发的按钮***************/
 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [
self.view addSubview:button];
    button.
frame = CGRectMake(100, 100, 200, 40);
    button.
backgroundColor = [UIColor blackColor];
   
    [button
addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];

   
}
-(
void)buttonAction
{
   
NSString *str = [[NSUserDefaults standardUserDefaults]objectForKey:@"night"];
   
if ([str isEqualToString:@"yes"]) {
        [[
NSUserDefaults standardUserDefaults] setObject:@"no" forKey:@"night"];
       
        [[
NSNotificationCenter defaultCenter]postNotificationName:@"changeColor" object:@"no"];
    }
else
    {
        [[
NSUserDefaults standardUserDefaults] setObject:@"yes" forKey:@"night"];
       
        [[
NSNotificationCenter defaultCenter]postNotificationName:@"changeColor" object:@"yes"];
    }

   
}
/*************夜间模式触发的按钮***************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值