forked from Tencent/QMUI_iOS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
QMUIWindowSizeMonitor.h
53 lines (37 loc) · 1.82 KB
/
QMUIWindowSizeMonitor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// QMUIWindowSizeMonitor.h
// qmuidemo
//
// Created by ziezheng on 2019/5/27.
// Copyright © 2019 QMUI Team. All rights reserved.
//
#import <UIKit/UIkit.h>
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol QMUIWindowSizeMonitorProtocol <NSObject>
@optional
/**
当继承自 UIResponder 的对象,比如 UIView 或 UIViewController 实现了这个方法时,其所属的 window 在大小发生改变后在这个方法回调。
@note 类似系统的 [-viewWillTransitionToSize:withTransitionCoordinator:],但是系统这个方法回调时 window 的大小实际上还未发生改变,如果你需要在 window 大小发生之后且在 layout 之前来处理一些逻辑时,可以放到这个方法去实现。
@note 如果子类和父类同时实现了该方法,则两个方法均会被调用,调用顺序是先父类后子类。
@param size 所属窗口的新大小
*/
- (void)windowDidTransitionToSize:(CGSize)size;
@end
@interface UIResponder (QMUIWindowSizeMonitor) <QMUIWindowSizeMonitorProtocol>
@end
typedef void (^QMUIWindowSizeObserverHandler)(CGSize newWindowSize);
@interface NSObject (QMUIWindowSizeMonitor)
/**
为当前对象添加主窗口 (UIApplication Delegate Window)的大小变化的监听,同一对象可重复添加多个监听,当对象销毁时监听自动失效。
@param handler 窗口大小发生改变时的回调
*/
- (void)qmui_addSizeObserverForMainWindow:(QMUIWindowSizeObserverHandler)handler;
/**
为当前对象添加指定窗口的大小变化监听,同一对象可重复添加多个监听,当对象销毁时监听自动失效。
@param window 要监听的窗口
@param handler 窗口大小发生改变时的回调
*/
- (void)qmui_addSizeObserverForWindow:(UIWindow *)window handler:(QMUIWindowSizeObserverHandler)handler;
@end
NS_ASSUME_NONNULL_END