UIWindow的一些属性

本文深入解析iOS应用开发中的屏幕管理与状态切换机制,包括获取屏幕尺寸、视图坐标系调整及应用状态变化的回调方法。详细阐述了如何在不同iOS版本下处理状态栏透明性问题,并通过实例演示如何实现文字换行与省略显示效果。同时,介绍了如何在应用进入后台和恢复时执行关键操作,确保用户体验与数据保存。

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

1.基本概念

//[UIScreen mainScreen] 获取当前设备的屏幕

//[[UIScreen mainScreen] bounds] 获取屏幕的边框大小

 

//main 仍然是程序入口

int main(int argc, char * argv[])

{

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nilNSStringFromClass([LZXAppDelegate class]));

    }

    

    //UIApplicationMain内部是一个死循环 会创建一个UIApplication 的单例对象,这个单例对象负责接收事件,但是不知如何处理 ,他就委托 代理(AppDelegate 去完成,UIApplication制定协议来约束 代理的行为

}

 

 

 

  //如果我们把view粘贴到window  就是相对于window的坐标系

    //iOS7之前 状态栏默认是黑色 320*20大小

    //iOS7之后 状态栏默认透明  320 *20 如果我们要避开状态栏 那么视图的y坐标要从20开始

 

 //设置行数  0表示无限行  没有限制

    label.numberOfLines  = 0;

    

    //设置换行模式或者省略模式

    /*

     NSLineBreakByCharWrapping以字符进行折断换行iOS7.0之前是由效果的7.1之后没有效果

     NSLineBreakByWordWrapping以单词作为截断换行

     //上面两种如果最后一个显示不完 那么直接截断不会显示

     

     //下面三种如果最后一行显示不完label的内容都有省略号

     NSLineBreakByTruncatingTail //如果显示不完尾部显示省略号

     NSLineBreakByTruncatingHead 头部

     NSLineBreakByTruncatingMiddle 中间

     */

    label.lineBreakMode = NSLineBreakByTruncatingMiddle;

 

2.方法

/*

 应用程序将要由活跃状态进到非活跃状态

 //将要进入后台的时候调用

 //可以做一些数据保存

 //点击home   打电话 锁屏程序一般都会进入后台

 */

- (void)applicationWillResignActive:(UIApplication *)application

{

    NSLog(@"applicationWillResignActive:将要进入后台");

}

//已经进入后台调用

- (void)applicationDidEnterBackground:(UIApplication *)application

{

    NSLog(@"已经进入后台");

    

}

//将要从后台进入前台调用

/*

 可以恢复保存的数据

 */

- (void)applicationWillEnterForeground:(UIApplication *)application

{

    

    NSLog(@"applicationWillEnterForeground将要进入前台");

    

}

//已经进入前台调用

- (void)applicationDidBecomeActive:(UIApplication *)application

{

    NSLog(@"applicationDidBecomeActive:已经进入前台");

    

}

/*

 如果要想让程序进入后台停止/结束程序 那么需要修改plist文件

 FirstIOSApp-Info.plist文件中添加一个配置Application does not run in background  YES  进入后台时结束程序

 

 NO不结束程序

 */

//如果配置了程序结束的配置信息 那么 当程序进入后台就会调用这个函数 主要用于结束程序时保存用户信息

 

- (void)applicationWillTerminate:(UIApplication *)application

{

    NSLog(@"程序停止");

}



//向根试图UIWindow上添加view

UIWindow *window=[[UIApplicationsharedApplication]keyWindow];

 window.rootViewController=nav;


 [[UIApplicationsharedApplication].keyWindow addSubview:view];



 [self.view.windowaddSubview:_shareBGViewBottom];

[self.view.windowbringSubviewToFront:_shareBGViewBottom];


//打电话


    NSURL *phoneURL = [NSURL URLWithString:[NSString stringWithFormat:@"telprompt:%@",phoneNumber]];

    //方法一

    //[[UIApplication sharedApplication] openURL:phoneURL]; //拨号

    

    //方法二

    static UIWebView* phoneCallWebView ;

    if (!phoneCallWebView ) {

        phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];// 这个webView只是一个后台的容易 不需要add到页面上来  效果跟方法二一样 但是这个方法是合法的

    }

    [phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值