iOS - UIApplication
前言
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIApplication : UIResponder
@available(iOS 2.0, *) public class UIApplication : UIResponder
1、Application 相关方法
Objective-C
// 运行程序时,必须执行的方法(程序入口)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch.
return YES;
} // 当前应用程序将要进入非活动状态(进入后台)(Will, Should 将要的意思)
- (void)applicationWillResignActive:(UIApplication *)application {
/*
Sent when the application is about to move from active to inactive state. This can occur
for certain types of temporary interruptions (such as an incoming phone call or SMS message)
or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame
rates. Games should use this method to pause the game.
*/
} // 当前程序已经进入后台(Did 已经的意思)
- (void)applicationDidEnterBackground:(UIApplication *)application {
/*
Use this method to release shared resources, save user data, invalidate timers, and store
enough application state information to restore your application to its current state in case
it is terminated later. If your application supports background execution, this method is called instead of
applicationWillTerminate: when the user quits.
*/
} // 当前程序将要进入前台
- (void)applicationWillEnterForeground:(UIApplication *)application {
/*
Called as part of the transition from the background to the inactive state; here you can
undo many of the changes made on entering the background.
*/
} // 当前程序已经变成活动状态(进入前台)
- (void)applicationDidBecomeActive:(UIApplication *)application {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive.
If the application was previously in the background,optionally refresh the user interface.
*/
} // 当前程序运行结束
- (void)applicationWillTerminate:(UIApplication *)application {
/*
Called when the application is about to terminate. Save data if appropriate. See also
applicationDidEnterBackground:.
*/
} // 内存紧张
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { // try to clean up as much memory as possible. next step is to terminate app
}
Swift
// 运行程序时,必须执行的方法(程序入口)
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch.
return true
} // 当前应用程序将要进入非活动状态(进入后台)(Will, Should 将要的意思)
func applicationWillResignActive(application: UIApplication) {
/*
Sent when the application is about to move from active to inactive state. This can occur
for certain types of temporary interruptions (such as an incoming phone call or SMS message)
or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame
rates. Games should use this method to pause the game.
*/
} // 当前程序已经进入后台(Did 已经的意思)
func applicationDidEnterBackground(application: UIApplication) {
/*
Use this method to release shared resources, save user data, invalidate timers, and store
enough application state information to restore your application to its current state in case
it is terminated later. If your application supports background execution, this method is called instead of
applicationWillTerminate: when the user quits.
*/
} // 当前程序将要进入前台
func applicationWillEnterForeground(application: UIApplication) {
/*
Called as part of the transition from the background to the inactive state; here you can
undo many of the changes made on entering the background.
*/
} // 当前程序已经变成活动状态(进入前台)
func applicationDidBecomeActive(application: UIApplication) {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive.
If the application was previously in the background, optionally refresh the user interface.
*/
} // 当前程序运行结束
func applicationWillTerminate(application: UIApplication) {
/*
Called when the application is about to terminate. Save data if appropriate. See also
applicationDidEnterBackground:.
*/
} // 内存紧张
func applicationDidReceiveMemoryWarning(application: UIApplication) { // try to clean up as much memory as possible. next step is to terminate app
}
2、main 方法
Objective-C
int main(int argc, char * argv[]) { @autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
作用:main 函数中只调用了一个 UIApplicationMain 的函数,整个程序的入口可以认为从 main 交给了 UIApplicationMain 函数。
函数原型:
UIKIT_EXTERN int UIApplicationMain(int argc,
char *argv[],
NSString * __nullable principalClassName,
NSString * __nullable delegateClassName);
argc, argv[]:与 main 的两个参数相同,一个是整形,一个是指针数组。
principalClassName:委托方类名,这个类实时检测当前程序的运行状态,这个参数一定要是 UIApplication 类或其子类,如果参数为空 nil,默认为 UIApplication 。
delegateClassName:代理方类名,遵守 UIApplicationDelegate 协议,实现协议中的方法,当第三个参数中的委托方检测到当前程序状态改变时会委托第四个参数在状态改变时执行相应的操作。
3、状态栏的设置
Objective-C
// 获取状态栏高度
/*
returns CGRectZero if the status bar is hidden,默认高度为 20.0
*/
CGFloat height = [UIApplication sharedApplication].statusBarFrame.size.height; // 显示/隐藏状态栏
/*
需在 Info.plist 添加 key:View controller-based status bar appearance,value:NO statusBarHidden:YES 隐藏,NO 显示(默认)
*/
[UIApplication sharedApplication].statusBarHidden = NO; // 设置状态栏颜色
/*
需在 info.plist 添加 key:View controller-based status bar appearance,value:NO
在 iOS7 版本以前直接设置就可以 UIStatusBarStyleDefault = 0, Dark content, for use on light backgrounds 黑色内容,默认
UIStatusBarStyleLightContent = 1, Light content, for use on dark backgrounds 白色内容
*/
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
Swift
// 获取状态栏高度
/*
returns CGRectZero if the status bar is hidden,默认高度为 20.0
*/
let height:CGFloat = UIApplication.sharedApplication().statusBarFrame.size.height // 显示/隐藏状态栏
/*
需在 Info.plist 添加 key:View controller-based status bar appearance,value:NO statusBarHidden:true 隐藏,false 显示(默认)
*/
UIApplication.sharedApplication().statusBarHidden = false // 设置状态栏颜色
/*
需在 info.plist 添加 key:View controller-based status bar appearance,value:NO
在 iOS7 版本以前直接设置就可以 case Default Dark content, for use on light backgrounds 黑色内容,默认
case LightContent Light content, for use on dark backgrounds 白色内容
*/
UIApplication.sharedApplication().statusBarStyle = .LightContent
4、状态栏上网络状态风火轮的设置
Objective-C
// 风火轮旋转状态设置
/*
YES 开始旋转,NO 停止旋转(默认),停止时自动隐藏
*/
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
Swift
// 风火轮旋转状态设置
/*
true 开始旋转,false 停止旋转(默认),停止时自动隐藏
*/
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
iOS - UIApplication的更多相关文章
- 【iOS [[UIApplication sharedApplication] delegate]】运用
之前想要拿到app的窗口,我们通常的写法是: [UIApplication sharedApplication].keyWindow 这种写法之前一直也觉得是正确的,没什么问题,而且网上大多数的博客或 ...
- iOS UIApplication sharedapplication用法
应用中打开其他应用 我们来讨论一下,在iOS开发中,如何实现从app1打开app2. 基本的思路就是,可以为app2定义一个URL,在app1中通过打开这个URL来打开app2,在此过程中,可以传送一 ...
- IOS UIApplication使用
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 【转】iOS UIApplication详解
1.状态栏UIStateBar的设置是在UIApplication里面设置的,它包含4中风格 2. - (void)beginIgnoringInteractionEvents; (void)endI ...
- ios UIApplication简单使用
每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的.可以通过sharedApplication方法得到. UIApplicati ...
- iOS UIApplication的代理方法总结
1.简单介绍 1> 整个应用程序的象征,一个应用程序就一个UIApplication对象.使用了单例设计模式 2> 通过[UIApplication sharedApplication]訪 ...
- IOS UIApplication和AppDelegate 关系
UIApplication.AppDelegate.委托等的关系? 什么是委托?为什么要有委托?委托在Iphone中的实现机制是怎样的? 一般来说,我们创建了一个Iphone项目,默认会有这个mai ...
- iOS:UIApplication和它对象的代理
<1>UIApplication的对象是单例对象 类方法:UIApplication *app = [UIApplication sharedAppplication] <2&g ...
- iOS UIApplication 里面各const实际用意
//后台通知:屏幕操作通知等等 UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification NS_AV ...
随机推荐
- 在Linux下搭建Git服务器的方法是什么样?
第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...
- JavaEE基础(二十一)/IO流
1.IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2 ...
- SQL中char、varchar、nvarchar的区别
char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. nvarcha ...
- 对Discuz的简单认识
Discuz是php的一个开源论坛系统,是由康盛创想公司2004开发,从Discuz! 1.0到 现在的Discuz X3,无论从功能上还是从用户体验上,都达到了一个质的飞越.主要包括论坛.门户.群组 ...
- move语义和右值引用
C++11支持move语义,用以避免非必要拷贝和临时对象. 具体内容见收藏中的“C++右值引用” .
- hdwiki 数据库结构说明
HDWiki数据库结构说明 以下标有“A”的表示该列为自增列,标有“P”的表示该列为主码,标有“I”的表示该列为索引列,标有“U”的表示该列为唯一列,标有“F”的表示全文搜索. ...
- python8
编译和解释性语言的区别 编译 典型的C C++ 编译完成之后是可执行文件. 机器码-底层(外文书,但是不懂中文,翻译成中文就可以看) 解释性语言----看一句英文书,让翻译解释一句 解释器写的代码便于 ...
- ACM题目————图的广度优先搜索
题目描述 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接 点的邻接点.如此进行下去,直到所有的结点都访问为止.在该题中,假定所有的结 ...
- Linux上部署Tomcat(包括JAVA环境的配置)
一. 用FTP工具,把apache-tomcat-7.0.64.tar.gz,jdk-7u79-linux-x64.tar.gz 上传到目录/home/zwl/Tomcat/命令下 因为Tomcat运 ...
- 【转】SVN建库方法
转载地址:http://blog.csdn.net/winonatong/article/details/5791919 SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平 ...