2022完整版UIApplication的介绍以及应用

简介: 2022完整版UIApplication的介绍以及应用

UIApplication的介绍以及应用

UIApplication是一个系统单例,不论在程序何时创建,都只有一块内存。它的应用有:设置手机桌面上app图标上显示的消息数量提醒,可以监控联网状态,打电话,打开网页,控制状态栏等。

1,app消息提醒数字。

可以这样:[UIApplication sharedApplication].applicationIconBadgeNumber = 10;

注意:设置这个 需要app注册推送通知服务:[UIApplication sharedApplication]registerNotificationSettings:[UIUserNotifications settingForType:UIUserNotificationtypeBadge categories: nil];

2,可以打开网页 (打电话 同理)

[[UIApplication sharedApplication] openURL:[NSURL urlWithString:@“ http://www.baidu.com”]]; 可以放在按钮的点击方法里,当点击了按钮,就直接打开指定的网页。

3,控制状态栏隐藏或者改变样式。

 首先注意: ios7以后,状态栏默认由控制器管理,即控制器会自动调用 preferStatusBarhidden这个方法来判断当前控制器的状态栏是否隐藏。但是每个控制器都需要设置,比较麻烦。 可以交给UIApplication 管理, 需要在info.plist 中添加 字段View Controller based status bar appearance 设置为NO,表示状态栏不需要由控制器控制。 那么就可以使用UIApplication 来管理状态栏。如下:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

4,uniapplication相关方法。

/************ 运行程序时,必须执行的方法(程序入口) *******************************/ - (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 }
Main法。
int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
作用:main 函数中只调用了一个 UIApplicationMain 的函数,整个程序的入口可以认为从 main 交给了 UIApplicationMain 函数。

作用: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 协议,实现协议中的方法,当第三个参数中的委托方检测到当前程序状态改变时会委托第四个参数在状态改变时执行相应的操作。
状态栏的设置。
// 获取状态栏高度 // 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;
状态栏上网络状态风火轮的设置。
// 风火轮旋转状态设置 // YES 开始旋转,NO 停止旋转(默认),停止时自动隐藏 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

8, 设置联网状态。

 [UIApplication sharedApplication] .networkActivityIndicatorVisible = YES; 设置这个,当程序正在联网时, 状态栏会有一个菊花在转。


相关文章
|
Android开发
官方侧滑菜单的简单使用
本节给大家带来基础UI控件部分的最后一个控件:DrawerLayout,官方给我们提供的一个侧滑菜单控件,和上一节的ViewPager一样,3.0以后引入,低版本使用它,需要v4兼容包,说到侧滑,相信很多人都用过github上的SlidingMenu,不过好像有两个版本,一个是单独的,另一个需要依赖另一个开源项目:ActionBarSherlock;既然Google为我们提供了这个控件,为何不用咧,而且在Material Design设计规范中,随处可见的很多侧滑菜单的动画效果,大都可以通过Toolbar +DrawerLayout来实现。
|
监控
2022完整版UIApplication的介绍以及应用
2022完整版UIApplication的介绍以及应用
|
iOS开发
UIApplication 基础篇介绍
UIApplication 基础篇介绍
|
JavaScript 前端开发 Android开发
Android开发学习笔记:浅谈WebView
Android开发学习笔记:浅谈WebView
Android开发学习笔记:浅谈WebView
xal
|
Web App开发 JavaScript API
VSCode插件开发全攻略(七)WebView
更多文章请戳[VSCode插件开发全攻略系列目录导航](https://www.atatech.org/articles/121864)。 # 什么是Webview 大家都知道,整个VSCode编辑器就是一张大的网页,其实,我们还可以在`Visual Studio Code`中创建完全自定义的、可以间接和`nodejs`通信的特殊网页(通过一个`acquireVsCodeApi`特殊方
xal
3959 0
|
Android开发 前端开发
Android开发之WebView
感觉在显示信息时,用途还可以的。 只是不知和React Native的应用场合有何分别?
1695 0
|
缓存 JavaScript Android开发
WebView使用相关笔记(一)
一、WebView常用的方法: 1、加载url // 1、加载一个网页 wvDeviceInfo.loadUrl("https://www.
1172 0
|
Android开发 iOS开发 开发工具