黑马程序员技术交流社区

标题: 关于UIWindow的一些总结和问题 [打印本页]

作者: coyote    时间: 2014-9-28 21:58
标题: 关于UIWindow的一些总结和问题
首先我们来说说UIWindow,UIWindow继承自UIView,也就是说,它也是可见的视图,根据官方文档的解释:
The UIWindow class defines an object known as a window that manages and coordinates the views an app displays on a device screen. Unless an app can display content on an external device screen, an app has only one window.
UIWindow类定义了一个window对象来管理和协调一个应用在一台设备屏幕上展示的视图。除非一个应用可以在一个外部设备上面展示内容,否则一个应用只有一个窗口。
创建一个window对象之后,只有调用了makeKeyAndVisible这个方法以后,我们才能在模拟器上看到这个window,这个方法包含了两层意思。一层意思是makeKey,window有keyWindow和非keyWindow之分。我们可以通过方法[UIApplication shareApplication].keyWindow来找到一个应用的主窗口。那么什么是主窗口呢,上官方文档:
The app's key window. (read-only)

This property holds the UIWindow object in the windows array that is most recently sent the makeKeyAndVisible message.
应用的主窗口(只读)
这个属性持有了在windows数组中最新发送makeKeyAndVisible这个消息的window。
而对makeKeyAndVisible这个方法的解释是
Makes the receiver the key window and visible.

This is a convenience method to make the receiver the main window and displays it in front of other windows at the same window level or lower. You can also hide and reveal a window using the inherited hidden property of UIView.
使接收器成为主窗口并且可见
这是个便捷的方法可以使接收器成为主窗口并且在和它的windowLevel同级或者比它的windowLevel要低的窗口前面展示内容.你也可以使用window由UIView继承来的hidden属性来隐藏和显示它。

大概了解了UIWindow是什么。但是还有些问题不是很清楚。

1.首先,除了makeKeyAndVisible方法之外,还有一个方法叫做makeKey,就是只让一个窗口作为主窗口响应事件,但是不显示出来。不明白这个方法的意义何在,什么情况下会用到这个方法而不用makeKeyAndVisible。

2.关于UIWindowLevel这个枚举值,
const UIWindowLevel UIWindowLevelNormal;
const UIWindowLevel UIWindowLevelAlert;
const UIWindowLevel UIWindowLevelStatusBar;

不是说一个应用只有一个window吗?那为什么还要这个枚举值来管理许多window呢,到底什么情况下会有很多window。
作者: SailY    时间: 2014-9-30 23:27
怎么自学的,分享分享下撒
作者: coyote    时间: 2014-10-1 10:59
SailY 发表于 2014-9-30 23:27
怎么自学的,分享分享下撒

我觉得自学最好的办法是看API。不管是你找技术博客,还是在论坛上请人回答,最权威,最清楚地讲解来自苹果官方API。例如现在你想学习一个UI控件,但是不知从何入手,你可以首先选择一些比较容易接受的方法,比如看培训视频,看博客,大概了解一个这个类有什么作用,主要的方法有哪些。这之后,你可以试着自己去写代码,在写代码的过程中,每遇到一个方法,都可以去查看具体的API是这么介绍的,它会告诉你一个方法的作用,这个方法的参数都有什么含义,参数类型,返回值类型,用法上的一些特点,以及其他一些功能相似的方法。如果说看视频是你入门的开始,那么看API就是你自学与深入学习的开始。API中将所有的方法进行分类。你首先可以看到一个类的总体介绍,然后有类方法,实例方法,当你能把API中的内容读完甚至完全吸收的时候,这个类你就差不多掌握了。这个应该是我在自学过程获益最多的方法吧,希望对你有所帮助:P
作者: SailY    时间: 2014-10-1 12:19
coyote 发表于 2014-10-1 10:59
我觉得自学最好的办法是看API。不管是你找技术博客,还是在论坛上请人回答,最权威,最清楚地讲解来自苹 ...

谢谢、我到现在都没搞定帮助文档,哎




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2