iOS 之 退出app(项目)的几种方法

路漫漫其修远兮,吾将上下而求索。也算是对程序员的一种真实写照了吧。

今天想研究一下iOS中退出项目的方法,说是今天,其实也关注并去了解很久了。只是始终找不到自己认为很好的方法。今天就先把自己了解的列举一下,以后如果还能找到认为更好的,就在补充吧。

这里是我们在项目的AppDelegate中普遍写到的一句代码(至于扩展和丰富,我们暂不去深究):

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #3fa7ad }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0; min-height: 20.0px }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #3fa7ad }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0; min-height: 20.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #0099f2 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #7d7e7e }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #00b1ff }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #c66576 }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #3fa7ad }
span.s4 { color: #bdb2a0 }
span.s5 { color: #76c2ff }
span.s6 { color: #8bc2dc }

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

LoginViewController *loginVC = [[LoginViewController alloc] init];

//    UINavigationController *homeNavigationView = [[UINavigationController alloc] initWithRootViewController:loginVC];

//    self.window.rootViewController = homeNavigationView;

self.window.rootViewController = loginVC;

return YES;

}

下面我们就围绕LoginViewController这个登录界面展开我们的讨论。我们都知道,登录的方式不同,才会导致退出的方式差异,有登录才有退出,这是因果关系。

而我们的登录方式无外乎这几种:利用 Modal 形式展示控制器 ;利用导航控制器UINavigationController跳转;当然也可以更改 UIWindow 的 rootViewController。下面我们就介绍一下这几种登录方式吧。

1、退出登录a

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #0099f2 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0; min-height: 20.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #76c2ff }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #bdb2a0 }
span.s4 { color: #76c2ff }

- (void)login

{

HomeViewController *homeVC = [[HomeViewController alloc]init];

[self presentViewController:homeVC animated:YES completion:nil];

}

- (void)exit

{

[self dismissViewControllerAnimated:YES completion:nil];

}

这是利用model形式登录和退出app的。当然登录的动画形式是多选的,你可以挑选一种喜欢的方式,你也可以自定义转场动画,这是你的自由。

/**
     UIModalTransitionStyleCoverVertical = 0,
     UIModalTransitionStyleFlipHorizontal __TVOS_PROHIBITED,
     UIModalTransitionStyleCrossDissolve,
     UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
     */

这里我做了个gif动画,是关于系统自带的,可以看下:

2、登录退出b

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #0099f2 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #76c2ff }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #bdb2a0 }
span.s4 { color: #76c2ff }
span.s5 { color: #00b1ff }

- (void)login

{

HomeViewController *homeVC = [[HomeViewController alloc]init];

[self.navigationController pushViewController:homeVC animated:YES];

}

- (void)exit

{

[self.navigationController popViewControllerAnimated:YES];

}

这是利用导航控制器UINavigationController跳转。也是我们在项目中经常用到的一种方式,当然,登录退出也是常用这种方式的。这里就不过多去述。

3、更改 UIWindow 的 rootViewController

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #0099f2 }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #bdb2a0 }
span.s4 { color: #76c2ff }

- (void)login{

HomeViewController *homeVC = [[HomeViewController alloc]init];

self.window.rootViewController = homeVC;

}

这个是写在AppDelegate中的,退出时再调用该方法。

4、退出app程序(不推荐使用,这种方式会让用户觉得app闪退)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0; min-height: 20.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #76c2ff }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #3fa7ad }
span.s4 { color: #76c2ff }
span.s5 { color: #00b1ff }
span.s6 { color: #bdb2a0 }
span.s7 { color: #8b87ff }

- (void)exitApplication {

UIWindow *window =  [UIApplication sharedApplication].keyWindow;

[UIView animateWithDuration:1.0f animations:^{

window.alpha = 0;

window.frame = CGRectMake(0, window.bounds.size.width, 0, 0);

} completion:^(BOOL finished) {

exit(0);

}];

}

 警告:不要使用exit函数,调用exit会让用户感觉程序崩溃了,不会有按Home键返回时的平滑过渡和动画效果;另外,使用exit可能会丢失数据,因为调用exit并不会调用-applicationWillTerminate:方法和UIApplicationDelegate方法;

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #bdb2a0 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #76c2ff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #7d7e7e }
span.s1 { }
span.s2 { color: #c66576 }
span.s3 { color: #bdb2a0 }
span.s4 { color: #00b1ff }

时间: 2024-08-26 18:21:29

iOS 之 退出app(项目)的几种方法的相关文章

android 安全退出应用程序的几种方法

android 安全退出应用程序的几种方法 正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程.android.os.Process.killProcess(android.os.Process.myPid())通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空 第二种方法:终止当前正在运行的Java虚拟机,导致程序终止System.exit(0)

IOS开发中数据持久化的几种方法--NSUserDefaults

IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefault是最简单直接的一个办法: 1)保存数据: 1 // 实例化一个NSUserDefaults单例对象 2 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; 3 // 把一个数组array保存在key为allContact的键值

iOS开发之动画编程的几种方法

iOS开发之动画编程的几种方法 IOS中的动画总结来说有五种:UIView<block>,CAAnimation<CABasicAnimation,CATransition,CAKeyframeAnimation>,NSTimer 这里我就总结了一下这五种方法,其实iOS开发中动画的编程都会在这里面变化,所以只要弄懂了这些动画编程就不难了. 一:UIView动画 一般方式 [UIView beginAnimations:@"ddd" context:nil];/

iOS获取设备唯一标识的8种方法

8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UDID),移动网络可以利用 UDID 来识别移动设备. 许多开发者把 UDID 跟用户的真实姓名.密码.住址.其它数据关联起来,网络窥探者会从多个应用收集这些数据,然后顺藤摸瓜得到这个人的许多隐私数据,同时大部分应用确实在频繁传输 UDID 和私人信息. 为了避免集体诉讼,苹果最终决

IOS获取设备唯一标识的八种方法

免责声明:本文章来源于其他博客整理 参考:http://www.2cto.com/kf/201308/237648.html 参考:http://www.2cto.com/kf/201311/255684.html 在iOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成(越狱的设备通过某些工具可以改变设备的U

尚硅谷springboot学习6-eclipse创建springboot项目的三种方法(转)

方法一 安装STS插件 安装插件导向窗口完成后,在eclipse右下角将会出现安装插件的进度,等插件安装完成后重启eclipse生效 新建spring boot项目 项目启动 方法二 1.创建Maven项目 2.选择项目类型 3.选择项目 4.编写项目组和名称-finish即可 5.修改pom.xml文件 <!-- spring boot基本环境 --> <parent> <groupId>org.springframework.boot</groupId>

iOS里面的屏幕适配(两种方法)

第一种方法:进行等比缩放 适用于只有单个或者很少的页面需要适配的时候 第二种方法:用别人已经封装的类,进行屏幕的适配 适用于多个页面都需要进行屏幕适配 这是在ViewController.m里面的代码

ios webview自适应实际内容高度4种方法

//第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollView contentSize].height; CGRect newFrame = webView.frame; newFrame.size.height = webViewHeight; webView.frame = newFrame; _webTablewView.contentSize = C

iOS 清理缓存功能的实现第二种方法

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 /**  *  清理缓存第二种方法  *  *  @param sender <#sender description#>  */ - (void)clearCache:(id)sender {     //彻底清除