OC-通知&Size Classes

1.Size Classes

  • 是什么
    为了适配越来越多的不同尺寸的屏幕
  • 核心理念
    将9块屏幕,进行分类,然后设计界面时,针对这一类别,进行设计,然后,等到程序运行时,系统会根据当前实际设备,判断出当前屏幕属于那一个类别,就加载针对这一类别设计的那个界面

2.通知 (Notification) 通过 观察者模式 实现

  • 作用: 完成对象之间的消息传递
  • 核心理念

    • 通知的发送方不知道接收方是谁,只需要将通知发给通知中即可
    • 通知的接收方不知道发送方是谁,只需要提前向通知中心订阅某个通知即可
    • 一旦通知的发送方真的发出了通知,则有通知中心负责将这个通知推送给所有订阅了该通知的接收方
  • 自定义通知
    接收方和发送方都是我们自己写的

  • 系统提供的通知
    • 键盘通知
    • 每当键盘弹起时系统会自动发出名字叫
    • UIKeyboardWillShowNotification
    • UIKeyboardDidShowNotification
    • 每当键盘收起时系统会自动发出名字叫
    • UIKeyboardWillHideNotification
    • UIKeyboardDidHideNotification
    //1.获取通知中心
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    //2.发通知
    //name     通知的名字
    //object   谁发的通知
    //userInfo  通知的内容
    [center postNotificationName:@"cctv2" object:self userInfo:@{@"time":@"6:20", @"name":@"明天xxx"}];
-(instancetype)init {
    if (self = [super init]) {
        //向通知中心 订阅名字叫 cctv2 的通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(play:) name:@"cctv2" object:nil];
    }
    return self;
}

-(void)play:(NSNotification*)notification {
    NSDictionary *dic = notification.userInfo;
    NSLog(@"中央2台%@点,播放%@综艺节目",dic[@"time"],dic[@"name"]);
}

键盘通知

-(void)viewWillAppear:(BOOL)animated {
    //向通知中心注册 接收 键盘将要弹起的通知
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(openKeyBoard:) name:UIKeyboardWillShowNotification object:nil];
    //向通知中心注册 接收 键盘将要收起的通知
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(closeKeyBoard:) name:UIKeyboardWillHideNotification object:nil];
}
//已经不再显示
-(void)viewDidDisappear:(BOOL)animated {
    //removeObserver 从通知中心 移除 之前监听的通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}



- (void)viewDidLoad {
    [super viewDidLoad];

}
-(void)openKeyBoard:(NSNotification*)notification {
    NSLog(@"键盘将要弹起");
}
-(void)closeKeyBoard:(NSNotification*)notification {
    NSLog(@"键盘将要收起");
}
发布了52 篇原创文章 · 获赞 5 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/shuan9999/article/details/52763170