iOS编程(双语版) - 视图 - 基本概念

1. 什么是视图?

视图显示为手机上的一块矩形区域,管理该区域的所有屏幕显示,它是UIView或者UIView的子类。

视图既可以从xib生成,也可以用代码生成。

 

2. 窗口

窗口是UIWindow或者它的子类。

视图结构的顶层便是app的窗口。

窗口必须充满设备的屏幕,因此,必须设置窗口的frame为屏幕的bounds。

(稍后我会讲解frame和bounds的区别)

代码如下:

Objective-C

UIWindow* w = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

Swift(iOS 8)

let w = UIWindow(frame: UIScreen.mainScreen().bounds)

 

iOS9以后代码明显简化了,系统会默认将屏幕的bounds赋给窗口的frame

Swift(iOS 9)

let w = UIWindow()

 窗口在app的整个生命周期中存在,为了达到这个目的,app的delegate class有一个强引用(strong retain)的属性叫做window,它永远不会被释放。

如何切换自定义的主视图?

通常的做法是我们把自定义的视图控制器赋给窗口的rootViewController属性。

最后再通过makeKeyAndVisible方法使视图可见。

 

时间: 2024-10-23 22:25:51

iOS编程(双语版) - 视图 - 基本概念的相关文章

iOS编程(双语版)-视图-Frame/Bounds/Center

1. Frame 每个视图都有一个frame属性,它是CGRect结构,它描述了视图所在的矩形在其父视图中的位置. (屏幕坐标系默认的原点在左上角,x轴向右伸展,y轴向下伸展) 设置frame通常通过视图的指定初始化器initWithFrame 下面来看个例子,该例子初始化了3个相互叠加的矩形区域 (Objective-C代码) UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(113, 111, 132, 194)]; v1.backg

iOS编程(双语版)-视图-Autolayout代码初步

一谈到Autolayout,初学者肯定想到的是IB中使用拖拽啊,pin啊各种鼠标操作来进行添加各种约束. 今天我们要聊得是如何利用代码来添加视图间的约束. 我们来看一个例子: (Objective-C代码) UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(100, 111, 132, 194)]; v1.backgroundColor = [UIColor colorWithRed:1 green:.4 blue:1 alpha:1];

iOS编程(双语版) - 视图 - Transform(转换)

视图有一个transform属性,它描述了应该如何绘制该视图. 该属性是CGAffineTransform结构体,它代表了3 x 3的变换矩阵(线性代数). 下面的代码让两个矩形视图旋转45度 (Objective-C代码) UIView* v1 = [[UIView alloc] initWithFrame:CGRectMake(113, 111, 132, 194)]; v1.backgroundColor = [UIColor colorWithRed:1 green:.4 blue:1

iOS编程(双语版) - 视图 - 手工代码(不使用向导)创建视图

如何创建一个空的项目,最早的时候XCode的项目想到中,还有Empty Application template这个选项,后来Apple把它 给去掉了. 我们创建一个单视图项目. 1) 删除main.storyboard 2) 删除ViewController相关文件 3) 删除AppDelegate的所有内容   给你的AppDelegate加入如下内容: (Objective-C代码) - (BOOL)application:(UIApplication *)application didF

拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高级主题 两大部分,以 Python 2.x 作为主要演示版本,涵盖的知识面广,知识点较齐全,代码多且好理解,但对 Python 版本特性的内容太久远,不合时宜. 整体来说 Python 核心 部分是主要内容,高级主题 部分作为应用扩展内容.后半部分篇幅较短,内容不够深入,只到了解的层面,好在横向够广(每一个主

《iOS编程指南》——2.5节准备你的iOS设备

2.5 准备你的iOS设备 iOS编程指南 在设备上部署应用之前,你需要按照图2-5所示的步骤来做相关配置. 如果你已经加入了iOS开发者计划的标准版或者企业版,你现在就可以生成相应的证书和描述文件(Provisioning Profile)了,通过这个证书和描述文件,你才能把下一章中的测试程序安装到你的iOS设备上. 证书和描述文件 Xcode构建工程的时候需要使用开发证书来对二进制文件进行签名,这个开发证书同时也是你作为iOS开发者的唯一标识.Xcode会从Mac OS X的Keychain

《iOS编程指南》——2.1节注册成为iOS开发者

2.1 注册成为iOS开发者 iOS编程指南 在不久之前,获取Xcode需要先注册为苹果开发者.现在不必了,你从Mac App Store直接就可以下载最新本的Xcode和iOS SDK. 如果你还在使用OS X 10.6(Snow Leopard),那么你需要先注册为苹果开发者,成为iOS开发者计划的一员,然后从iOS Dev Center下载Xcode 4和iOS SDK,因为Mac App Store上提供的Xcode的版本只兼容OS X 10.7(Lion)和10.8(Mountain

谷歌升级iOS和Android版谷歌地图

5月7日,谷歌对iOS和Android版谷歌地图进行升级,其中iOS版版本号是3.0,而Android版版本号是8.0.最新版本中对离线地图的控制进行优化,同时提供了一系列有用的导航功能. 现在iOS版和Android版谷歌地图的功能已经差不多了.在最新版本中,用户可以选择某一区域,调整视图,随后自主命名这一区域.应用将在用户个人档案中列出所有离线地图,而用户可以对这些离线地图进行编辑或删除. 在最新版应用中,方向导航功能仍需要网络连接,但得到了大幅改进.新版谷歌地图提供了车道助手,帮助用户避免

IOS实现简易版的QQ下拉列表_IOS

下面我们通过实例代码来一步步看怎么实现, 首先建立了两个模型类, 一个Friend, 一个FriendGroup类. 数据源用的本地的一个plist文件. plist文件中包含了FriendGroup的name,friends数组等属性. Friend.h 示例代码 #import <Foundation/Foundation.h> @interface Friend : NSObject @property (nonatomic, copy) NSString *name; @end Fri