UIWindow使用技巧

看到UIWindow,相信很多人都会想起下方的代码。这是旧版本Xcode提供的模板,用于创建整个项目的视图容器。

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

{

CGRect bounds = [UIScreen mainScreen].bounds;

self.window = [[UIWindow alloc] initWithFrame:bounds];

[self.window makeKeyWindow];

}

那究竟什么是UIWindow呢?它是继承自UIView的一种特殊视图,用于承载基本的UI控件,包括UIView。每个app里至少有一个UIWindow,称作keyWindow。当这个window执行becomeKeyWindow

,makeKeyWindow或者makeKeyAndVisible方法,就成为了keyWindow。除了keyWindow之外,还可以创建其他的window用于辅助显示。

UIWindow显示:

通过new,alloc创建出来的window都是隐藏的,将window的属性hidden设成NO或者执行makeKeyAndVisible就可以将window显示出来。

UIWindow的默认显示层级(UIWindowLevel)有3种:

UIWindowLevelNormal -- 普通层级,在状态栏下方

UIWindowLevelAlert -- 跟UIAlertView一个层级,比状态栏高一个层级

和UIWindowLevelStatusBar -- 跟状态栏一个层级

创建时默认是UIWindowLevelNormal,一般keywindow都是这个层级。由于UIWindowLevel是CGFloat数值,因此可以将该属性设成一个具体的数值。或者在提供的3种值的基础进行加减。如腾讯的自选股app中,刷新列表时候在状态栏上方显示一个刷新成功提示可以将UIWindowLevel设成UIWindowLevelStatusBar+1。

注意:

项目使用ARC时,使用临时变量创建的UIWindow是不会显示出来的。因为它会直接变销毁掉。也是本人遇到的一个坑。

时间: 2024-07-31 17:05:41

UIWindow使用技巧的相关文章

iOS 小技巧总结,绝对有你想要的

iOS 小技巧总结,绝对有你想要的 原文链接:http://www.jianshu.com/p/4523eafb4cd4 在这里总结一些 iOS 开发中的小技巧,能大大方便我们的开发,持续更新. —— 由 xcvxvxc分享 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 在viewWillAppear里面添加如下代码: //分组列表头部空白处理 CGRect frame = myTableView.tableHeade

iOS6的旋屏控制技巧

iOS6的旋屏控制技巧 在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceO

iOS-常用技巧

技巧一: 我们在写程序的时候,屏幕的宽高我们不能写固定,例如写成320,480之类的,因为我们要适配不同的手机.常用的一种方法是在 .pch文件中设置宽高,因为.pch是一个预编译文件,在全局都能访问到. #define ScreenHeight [UIScreen mainScreen].bounds.size.hight; #define ScreenWidth [UIScreen mainScreen].bounds.size.width; 技巧二: 这个问题比较简单,完全算不上技巧,但是

iOS 知识-常用小技巧大杂烩

iOS 知识-常用小技巧大杂烩 1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调用 * 当这个视图显示到屏幕上了,点击按钮 * 添加子视图也会调用这个方法 * 当本视图的大小发生改变的时候是会调用的 * 当子视图的frame发生改变的时候是会调用的 * 当删除子视图的时候是会调用的 3,NSString过滤特殊字符 // 定义一个特殊字符的集合 NSCharact

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVersionKey 2.沙盒的数据存储及读取 1> 数据存储: [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey]; 存储数据时记得同步一下 [[NSUserDefaults standardUser

UIWindow、 UIView及UILabel

在正式进入UI之前,我们需要了解一些知识. 苹果手机的分辨率:iPhone3GS  320*480; iPhone4和iPhone4S 640*960;iPhone5c.5S 640*1136; iPhone6  750*1334; iPhone6plus 1080*1920. 屏幕尺寸如3.5英寸:320 * 480, 如果采用的是Retina屏,宽和高都要分别乘以2,这也就是为什么3GS和4同为3.5英寸,但是分辨率却差了4倍. 学习UI需要使用xcode中空工程,iOS -> Applic

iOS开发实用技巧—项目新特性页面的处理

iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController. 头文件代码: 1 // 2 // JMNewfeatureViewController.h 3 // 4 5 #import <UIKit/UIKit.h> 6 7 t

iOS:小技巧

记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: 1 2 UIWindow * window=[[[UIApplication sharedApplication] delegate] window];   CGRect rect=[_myButton convertRect:_myButton.bounds toView:window]; 2.UIImageView 和UILabel 等一些控件,需要加这句才能setCorn 1 _myLabel.l

UIwindow的学习

UIwindow 的学习 层级关系测试代码: @interface AppDelegate () @property (nonatomic, strong) UIWindow *arlewWindow; @property (nonatomic, strong) UIWindow *norWindow; @property (nonatomic, strong) UIWindow *statusWindow; @end - (BOOL)application:(UIApplication *)a