iOS UIWindow,UIApplication类中的属性介绍

UIWindow:
1、在程序的开发中,用到UIWindow的地方并不多,很多时候只是在设置应用程序的根试图控制器的时候会用到,比如在AppDelegate.h中使用:

// 程序一启动就会到这个方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    return YES;
}

window是用来设置程序的窗口的,在iOS中,所有的界面都是展示在窗口上面的,所有window必须设置。
2、window的属性以及方法
(1)keyWindow // 只读属性,用于判断窗口是否是主窗口

(2)- (void)makeKeyWindow; // 设置成主窗口,有可能运行的效果窗口是黑色的,那是因为窗口不可见,建议不使用这个方法。

(3)- (void)makeKeyAndVisible; // 设置成主窗口并可见,建议使用这个方法设置窗口。

(4)几种坐标转换方法,可用来转换坐标系

- (CGPoint)convertPoint:(CGPoint)point toWindow:(nullable UIWindow *)window; - (CGPoint)convertPoint:(CGPoint)point fromWindow:(nullable UIWindow *)window; - (CGRect)convertRect:(CGRect)rect toWindow:(nullable UIWindow *)window; - (CGRect)convertRect:(CGRect)rect fromWindow:(nullable UIWindow *)window;

5、 window的通知类型,在window的操作中,如果需要做操作,可以检测window的通知,

UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; // window已经可见的通知
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification;  // window已经消失的通知
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification;     // window成为主窗口的通知
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification;     // 注册主窗口的通知

6、有按键盘操作的一些通知

UIKeyboardWillShowNotification // 键盘将要显示的通知
UIKeyboardDidShowNotification // 键盘已经显示的通知
UIKeyboardWillHideNotification // 键盘将要消失的通知
UIKeyboardDidHideNotification // 键盘已经消失的通知

UIKeyboardWillChangeFrameNotification // 键盘frame将要改变的通知
UIKeyboardDidChangeFrameNotification // 键盘frame已经改变的通知

7、如果检测了键盘的动作通知,可以就可以取的键盘的一些数据,有关键盘取数据的key如下(检测了键盘通知的时候,通知会附加一个userInfo字典属性,里面存储有关键盘的信息),

UIKeyboardFrameBeginUserInfoKey // 键盘开始变化的时候的值
UIKeyboardFrameEndUserInfoKey // 键盘结束变化的时候的值
UIKeyboardAnimationDurationUserInfoKey // 键盘变化的时间戳
UIKeyboardAnimationCurveUserInfoKey

/* // 如果检测的是UIKeyboardFrameBeginUserInfoKey或者UIKeyboardFrameEndUserInfoKey通知,会用到下面的key UIKeyboardCenterBeginUserInfoKey UIKeyboardCenterEndUserInfoKey UIKeyboardBoundsUserInfoKey */

UIApplication:

1、调用系统打电话,发短信,发邮件,

- (BOOL)canOpenURL:(NSURL *)url // 用于判断是否可以用来打开url
- (BOOL)openURL:(NSURL*)url // 打开url,比如打电话,发短信,发邮件

2、keyWindow // 只读属性,用来获取程序的主窗口,在切换根控制器的时候经常用到(比如登录界面在登录成功之后,需要切换到成切的其它控制器)

[UIApplication sharedApplication].keyWindow.rootViewController = [UIViewController new];

3、networkActivityIndicatorVisible // Bool值,默认是NO,用来设置联网状态的刷新提示(就是状态栏上的那个菊花,在请求数据的时候,会转圈的那个菊花),设置成YES,就不会出现了,一般不会注意这个问题。
4、statusBarStyle // UIStatusBarStyle 枚举,就是手机屏幕最上面的状态栏的样式,白色或者黑色,

UIStatusBarStyleDefault // 默认是黑色的, UIStatusBarStyleLightContent // 其实是白色的

5、statusBarOrientation // 设备的旋转样式

UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft

6、statusBarFrame // 状态栏的frame ,如果状态栏隐藏的话,返回CGRectZero
7、applicationIconBadgeNumber // 桌面应用图标右上角的通知数字,=0的话直接隐藏,但是必须在设置之前注册通知
8、applicationSupportsShakeToEdit // 支持摇一摇
9、applicationState // 判断程序的状态,

UIApplicationStateActive, // 活跃状态,前台
UIApplicationStateInactive,  // 非活跃状态
UIApplicationStateBackground // 后台状态

10、- (void)registerForRemoteNotifications // 注册远程通知
- (void)scheduleLocalNotification:(UILocalNotification *)notification // 发送本地通知
- - (void)cancelAllLocalNotifications // 取消所有本地通知
- scheduledLocalNotifications // 获取所有的本地通知
- - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings // 注册通知
11、proximitySensingEnabled // 是否开启传感器,默认NO,YES的话可以检测手机附近物体的靠近

12、上面的基本上就是常用的一些数据,还有一个通知和key就不一一介绍了,

你可能感兴趣的:(ios,application,应用程序,UIWindow,窗口设置)