UIWindow全部API学习。

写API的目的在于作为一个字典的作用。简单,明了,温习,复习。

//1.定义一个CGFloat类型的UIWindowLevel,UIWindowLevel分为三种不同选择,定义了UIWindow不同层级的展示方式,UIWindow在现实的时候会根据三种不同选择进行不同的排序,即level高的将排在level比他低的层级前面。

typedef
CGFloat UIWindowLevel;

//2.添加UIScreen屏幕属性

@property(nonatomic,retain)
UIScreen *screen
NS_AVAILABLE_IOS(3_2); 
// default is [UIScreen mainScreen]. changing the screen may be an expensive operation and should not be done in performance-sensitive code

//3. UIWindowLevel属性

@property(nonatomic)
UIWindowLevel windowLevel;                  
// default = 0.0

//4.keyWindow是指定的用来接收键盘以及非触摸类的消息,而且程序中每一个时候只能有一个window是keyWindow

@property(nonatomic,readonly,getter=isKeyWindow)
BOOL keyWindow;

//5.设置当前window变成主window

- (void)becomeKeyWindow;                              
// override point for subclass. Do not call directly

//6.放弃当前主window

- (void)resignKeyWindow;                              
// override point for subclass. Do not call directly

//7.让当前window变成keyWindow

- (void)makeKeyWindow;

//8.让当前window变成keyWindow,并显示出来

- (void)makeKeyAndVisible;                            
// convenience. most apps call this to show the main window and also make it key. otherwise use view hidden property

//9.设置UIViewController为根控制器

@property(nonatomic,retain)
UIViewController *rootViewController
NS_AVAILABLE_IOS(4_0); 
// default is nil

//10.当产生一个事件时,先传递给UIApplication,而UIAppliaction将这个事件传递UIWindow进行处理,然后由UIWindow将这个时间传递给特定的对象,即first responder,而UIWindow就是通过sendEvent寻找first responder,经过sendEvent分发到合适的对象,sendEvent就相当于时间的中转站。

- (void)sendEvent:(UIEvent *)event;                   
// called by UIApplication to dispatch events to views inside the window

//11.将当前window一个坐标转化为相对于另外一个窗口的坐标

- (CGPoint)convertPoint:(CGPoint)point toWindow:(UIWindow *)window;   
// can be used to convert to another window

//12.将另一个窗口的一个坐标转化为当前窗口的坐标

- (CGPoint)convertPoint:(CGPoint)point fromWindow:(UIWindow *)window; 
// pass in nil to mean screen

//13.转化当前窗口一个矩形坐标相对于当前窗口的坐标.

- (CGRect)convertRect:(CGRect)rect toWindow:(UIWindow *)window;

//14.转化里面那个外窗口一个矩形坐标相对于当前窗口的坐标

- (CGRect)convertRect:(CGRect)rect fromWindow:(UIWindow *)window;

@end

//15.定义UIWindow展示优先级不同层次的选择 ,根据window显示级别优先的原则,级别高的灰显示在上面,级别低的在下面,我们程序正常显示的位于最底层

UIKIT_EXTERN
const
UIWindowLevel UIWindowLevelNormal;
//默认的window就是Normal级别,优先级值这个层次的值为0,通常我们程序的界面都是处于这个Normal级别的

UIKIT_EXTERN
const UIWindowLevel UIWindowLevelAlert;
//屏幕的statusBar处于中等水平,优先级值为1000

UIKIT_EXTERN
const
UIWindowLevel UIWindowLevelStatusBar;// alert级别的,通常是UIAlertView和UIAlertSheet这些用来中断正常流程,提醒用户等操作的。优先级值为2000.按照这样说来,alertView弹框出来下面也是一层UIWindow,只不过是优先级最高的alert级别,所以是keyWindow,当前只能交互alert,这就是为什么弹框出来其他界面都不可交互的原因

//16.接下来是window变化的四个通知

UIKIT_EXTERN
NSString *const UIWindowDidBecomeVisibleNotification; //当window显示就会调用

UIKIT_EXTERN
NSString *const UIWindowDidBecomeHiddenNotification;  //window被隐藏之后调用,需要注意的是,当程序进入后台时,这两个通知不会被调用,即使应用转到后台,窗口不会显示,窗口应用下的上下文中仍然被认为是可见的

UIKIT_EXTERN
NSString *const UIWindowDidBecomeKeyNotification;     //window成为主窗口调用

UIKIT_EXTERN
NSString *const UIWindowDidResignKeyNotification;     //window撤销主窗口调用

//17. 监听键盘变化的通知

UIKIT_EXTERN
NSString *const UIKeyboardWillShowNotification; //当键盘将要显示的时候调用

UIKIT_EXTERN
NSString *const UIKeyboardDidShowNotification; //当键盘已经显示的时候调用

UIKIT_EXTERN
NSString *const UIKeyboardWillHideNotification; //当键盘将要隐藏的时候调用

UIKIT_EXTERN
NSString *const UIKeyboardDidHideNotification;
//当键盘隐藏完毕的时候调用

//18.关于监听键盘通知的一些userInfo消息

UIKIT_EXTERN
NSString *const UIKeyboardFrameBeginUserInfoKey       
NS_AVAILABLE_IOS(3_2); //动画前键盘的位置,包含CGRect的NSValue
可以在通知方法中写得到位置
CGRect rect = [[notif.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

UIKIT_EXTERN
NSString *const UIKeyboardFrameEndUserInfoKey         
NS_AVAILABLE_IOS(3_2);
//动画结束后键盘的位置  包含CGRect的NSValue

UIKIT_EXTERN
NSString *const UIKeyboardAnimationDurationUserInfoKey
NS_AVAILABLE_IOS(3_0);
//动画的持续时间,数值是NSNumber

UIKIT_EXTERN
NSString *const UIKeyboardAnimationCurveUserInfoKey   
NS_AVAILABLE_IOS(3_0); //动画的曲线类型(UIViewAnimationCurve),数值是NSNumber

//19.监听键盘frame大小变化的通知

UIKIT_EXTERN
NSString *const UIKeyboardWillChangeFrameNotification 
NS_AVAILABLE_IOS(5_0); //当键盘frame值将要改变的时候调用

UIKIT_EXTERN
NSString *const UIKeyboardDidChangeFrameNotification  
NS_AVAILABLE_IOS(5_0); //当键盘frame值已经改变的时候调用

//下面为一些废弃很久的API,不多做解释

UIKIT_EXTERN
NSString *const UIKeyboardCenterBeginUserInfoKey  
NS_DEPRECATED_IOS(2_0,
3_2);

UIKIT_EXTERN
NSString *const UIKeyboardCenterEndUserInfoKey    
NS_DEPRECATED_IOS(2_0,
3_2);

UIKIT_EXTERN
NSString *const UIKeyboardBoundsUserInfoKey       
NS_DEPRECATED_IOS(2_0,
3_2);

时间: 2024-10-15 07:19:04

UIWindow全部API学习。的相关文章

野兽的Angular Api 学习、翻译及理解 - - form.FormController、ngModel.NgModelController

野兽的ng api学习 -- form.FormController.ngModel.NgModelController form.FormController FormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始. 每个表单指令创建一个FormController实例. 方法: $addControl(); 给表单注册一个控制器. 使用了ngModelController的输入元素会在连接时自动执行. $removeControl(); 给表单注

@野兽的Angular Api 学习、翻译及理解 - - angular.module

@野兽的 ng api 学习 -- angular.module angular.module 创建一个全局的可用于检索和注入的Angular模块.所有Angular模块(Angular核心模块或者第三方模块)想要在应用里实现,都需要使用这个注入机制. 格式:angular.module(name,[requires],[configFn]); name :  string  创建的模块名称. [requires]: 字符串的数组  代表该模块依赖的其他模块列表,如果不依赖其他模块,则为空数组.

野兽的Angular Api 学习、翻译及理解 - - ngRoute Angular自带的路由

野兽的ng api学习 -- ngRoute ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信息. controller:字符串或函数,指定控制器. controllerAs:一个用于控制器的标识符名称.. template:字符串或函数,html模板. templateUrl:字符串或函数,html模板的地址. resolve:对象,一个可选的

野兽的Angular Api 学习、翻译及理解 - - $templateCache 和 $templateRequest

野兽的ng api学习 -- $templateCache 和 $templateRequest $templateCache 第一次使用模板,它被加载到模板缓存中,以便快速检索.你可以直接将模板标签加载到缓存中,或者通过$templateCache服务. 通过script标签: <script type=”text/ng-template” id=”template.html”> <p>This is the content of the template</p> &

野兽的Angular Api 学习、翻译及理解 - - $sce 和 $sceDelegate

野兽的ng api学习 -- $sce 和 $sceDelegate $sce $sce 服务是AngularJs提供的一种严格上下文逸出服务. 严格上下文逸出服务(翻译水平有限,较渣...) 严格上下文逸出(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式.由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子.我们称这些上下文语境为特权或者SCE. 下面代码是简化了的ngBindHtml实现(当然,这不是完整版ngBindHtml源码

野兽的Angular Api 学习、翻译及理解 - - $q 承诺与延迟

野兽的ng api学习 -- $q $q 一个帮助处理异步执行函数的服务.当他们做完处理时,使用它们的返回值(或异常). 受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用. $q的两种方式---这是一个更类似于Kris Kowal Q或jQuery的递延实现,另一种在一定程度上类似的ES6承诺. Deferred Api 一个被$q.defer()调用的deferred的新实例. deferred对象的目的是暴露相关承诺实例,以及APIs被执行的成功

野兽的Angular Api 学习、翻译及理解 - - $animate

野兽的ng api学习 -- $animate $animate $animate服务提供了基本的DOM操作功能如在DOM里插入.移除和移动元素,以及添加和删除类.这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画. $animate在Angular核心都是有效的,无论如何,这个服务为了支持所有动画须包含ngAnimate模块.否则,$animate只能做简单的DOM操作. 方法: enter(element,parent,after,[done]); 在D

野兽的Angular Api 学习、翻译及理解 - - ngInclude、ngTransclude

野兽的 ng api 学习 - - ngInclude.ngTransclude 这2个都是HTML DOM嵌入指令 ngInclude 读取,编译和插入外部的HTML片段. 格式:ng-include=“value”<ng-include src=”value” onload=“ex”autoscroll=“str”></ng-include>  class=”ng-include:value” value:string类型  模板id或者模板url ex:表达式,载入的时候执行

野兽的Angular Api 学习、翻译及理解 - - ngIf、ngSwitch、ngHide/ngShow

野兽的 ng api 学习 - - ngIf.ngSwitch.ngHide/ngShow 在组合这些ng指令写到一篇文章里的时候,基本是有规则的,野兽把功能相似相近的一类大多会组合到一起,方便理解和记忆. 这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断. ngIf ngIf指令会根据指定的表达式返回的boolean类型值对该元素做添加到/移除出Dom树的操作. 格式:ng-if=“value” value:表达式  返回结果为boolean类型. 使用代码: