相关文章推荐
坚强的脸盆  ·  阿里云也有 IDEA 插件 Cloud ...·  20 小时前    · 
痴情的啄木鸟  ·  用Java ...·  3 小时前    · 
安静的便当  ·  如何让Qt ...·  15 分钟前    · 
健身的键盘  ·  Web ...·  1 年前    · 
唠叨的鸵鸟  ·  FileStream 类 ...·  1 年前    · 
腹黑的消炎药  ·  System.ArgumentExcepti ...·  1 年前    · 

这两天写了一个手势解锁,该死的需求要求这个手势解锁页面各种出现,毕竟人家这个客户端酒20多个领导用用的,怕泄密就加了各种保密措施。
先来看下需求:
1.用户注册登录后跳转设置手势页面(必须设置)。
2.app进入后台跳转前台是进入手势解锁界面。
3.app内部分按钮跳转手势界面。

开始我也想过使用UIWindow,后面因为没有使用过就用push和模态窗口两种方式去实现了一下,最后勉强实现了,但是在过程中真的是遇到各种问题,就包括我第二次进入客户端进入手势解锁页面时如果使用模态窗口的话,当手势解锁成功时就导致了整个界面就是黑的,因为后面没有界面了,还有出线了连续两次push到同一控制器等原因,虽然实现了最后,不过我还是用window窗口切换实现了一次,下面我就分享下大致实现的过程,其中也遇到了不少的坑。

首先就是实现了两个window,一个主window,另外一个window我用来放了手势解锁页面。

具体从ios几开始,我也忘记了,现在的window必须指定根控制器,这个根控制器会帮你自动的管理这个window。

在初始化window和控制器之后我编译运行了一下,发现还是实现不了,跑了很多遍终于发现了问题,就是窗口必须被强指针引用,不然一创建就直接被销毁了。下面附上Demo:

self.window =[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  XYLoginViewController *LoginView = [[XYLoginViewController alloc] init];
  CustomNavigationController *navControl =[[CustomNavigationController alloc] initWithRootViewController:LoginView];
  self.window.rootViewController = navControl; LockController *LockView = [[LockController alloc] init]; self.LockWindow =[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.LockWindow.backgroundColor = [UIColor yellowColor]; //设置高的优先级,保证窗口在最上方 self.LockWindow.windowLevel = UIWindowLevelAlert + 2; self.LockWindow.rootViewController = LockView; if ([self isFirstTimeRun]) { //修改为不再是第一次运行 [self setFirstTimeRun:NO]; //显示主窗口 self.window.hidden = NO; [self.window makeKeyAndVisible]; } else { self.LockWindow.hidden = NO; [self.LockWindow makeKeyAndVisible]; }

窗口隐藏:

AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
//隐藏解锁窗口
                [myDelegate.LockWindow resignKeyWindow];
                myDelegate.LockWindow.hidden=YES;
文/进击的小杰(简书作者)
原文链接:http://www.jianshu.com/p/5bc2921cf772
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。 @property (nonatomic, strong) UIWindow *window; // 添加window 如果视图控制器没有导航控制器 或者标签控制器会崩溃 这时候要添加window的rootViewcController 可以解决 // 崩溃打印内容 Assertion failure in -[UIApplication _runWithMainScene:transitio... 由于最近项目需要制作一个可定制的底部弹窗效果,因此研究了一下UIActionSheet,打算重写一个自定义的弹窗,在写demo的时候出于偷懒的原因,直接在新建项目的 - (void)viewDidLoad {} 中写入了 窗口 切换 测试代码,结果在调试的时候就出现了如下错误信息: Terminating app due to uncaught exception 'NSInternalInc... 最近项目开发,要做一个文件下载功能,本来想通过UIAlertView在下载过程中屏幕展示下载进度,但是在将UIProgressView作为子视图添加到UIAlertView时,一直看不到进度条,在网上搜了搜资料,原来时IOS7的UIAlertView不再支持通过[obj addSubView:obj]的方式。于是决定还是自己自定义一个AlertView,可以顺便学习一下。不过并不是说IOS7的UI