iOS开发-UI 从入门到精通(一)
一、UI概述
(1)UI(User Interface)用户界面,用户能看到的各种各样的页面元素;
(2)iOS App = 各种各样的UI控件+业务逻辑和算法;
(3)想要开发出一款精美的应用程序,需要熟练掌握各种各样UI控件的用法。
二、UIWindow
1、什么是window?
(1)widow是窗口,每个app都需要借助window将内容展现给用户看;
(2)在iOS中,使用UIWindow类来表示窗口,通常一个应用程序只创建一个UIWindow对象;
(3)window的主要作用是呈现内容给用户,我们不会对window做太多操作。
2、如何创建window?
(1)在创建window的时候,需要指定window的大小。
(2)通常window的大小(frame)与屏幕(UIScreen)大小一致。
示例代码:self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3、补充一点:创建项目流程:
(1)command + shift + N—>iOS下的Application—>Empty Application。点击Next。
(2)输⼊Product Name,点击Next。
(3)选择项目保存路径,点击Create。
4、window如何呈现内容?下面我们将引入UIView;
三、UIView
1、什么是View?
(1)view(视图):代表屏幕上的一个矩形区域。iOS中用UIView来表示视图
(2)通俗的说各种UI控件都属于view。
(3)不同的控件代表不同种类的view。 iOS中所有能看到的内容都是view或其子类。
2、如何创建view?
(1)创建视图的步骤如下:
①开辟空间并初始化视图(初始化时,给出视图位置和大小)
②对视图做一些设置(比如:背景颜色)
③将视图添加到window上进行显示
④释放视图对象
(2)视图创建代码:
UIView *blueView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 120, 100)];
blueView.backgroundColor = [UIColor blueColor];
[self.window addSubview:blueView];
[blueView release];
3、什么是Frame?
(1)frame是view的重要属性,是我们做视图布局的关键,它决定了视图的大小和位置。
4、如何完全掌控view的大小和位置?下面我们将引入iOS坐标系;
5、iOS坐标系:
(1)iOS提供了用于布局的平面坐标系。左上角为坐标系的原点。
(2)水平向右:为x的正方向。
(3)垂直向下:为y的正方向。
(4)坐标系不是以像素作为划分依据,而是以“点”作为依据。
6、Frame包含什么?
(1)frame是一个结构体,包含2部分内容:origin和size。
(2)origin也是一个结构体,包含2部分内容:x和y。
(3)size同样是一个结构体,包含2部分内容:width和height。
(4)frame的origin和size是相对于父视图来说的。
(5)CGRectMake()函数可以帮我们快速构造一个CGRect变量。
7、什么是Center?
(1)center(中心点)也是view重要的属性。
(2)center是个结构体,包含2个部分:x和y。
(3)center与frame有着密切的联系。
(4)center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.height/2;
8、什么是bounds?
(1)bounds(边界)也是view的重要属性,用于定义自己的边界。
(2)它同frame一样是一个CGRect结构体变量。
(3)当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。
(4)当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。
9、bounds和frame和center有着微妙的联系(详见下图):



10、添加视图
(1)UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。
(2)UIView提供了其他添加视图的方法(详见下表);
11、管理视图层次
(1)UIView除了提供添加视图的方法,还提供了管理视图层次的方法(详见下表)。

12、视图重要属性
(1)UIView作为其他UI控件的BaseClass,提供了很多属性(详见下表):

四、UILabel
1、UILabel是什么?
(1)UILabel(标签):是显示文本的控件。在App中UILabel是出现频率最高的控件。
(2)UILabel是UIView子类,作为子类一般是为了扩充父类的功能,UILabel扩展了文字显示的功能,UILabel是能显示文字的视图。
2、如何使用UILabel?
(1)创建UILabel与创建UIView的步骤很相似。
①开辟空间并初始化(如果本类有初始化方法,使用自己的;否则使用父类的)。
②设置文本控制相关的属性。
③添加到父视图上,用以显示。
④释放。
(2)视图创建代码:
UILabel *userNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 100, 100, 30)];
userNameLabel.text = @"用户名";
[containerView addSubview:userNameLabel];
[userNameLabel release];
3、如何控制文本显示?
(1)UILabel的主要作用是显示一段文本,因此提供了很多与显示文本相关的API(详见下表)

4、小节
(1)UIView是所有可视化控件的基类。
(2)UILabel是具有特定外观特定功能的视图。
(3)UILabel侧重于文本的呈现。
五、总结
(1)App靠window来呈现内容,一个程序一般只创建一个window。
(2)App中能看到的元素,都是UIView及其子类。
(3)UIView作为所有可视化控件的BaseClass,提供了许多属性和方法。 显示效果控制(frame、alpha等)、视图添加和移除(addSubview: 等)、视图层次调整(bringSubviewToFront:等)等。
(4)UILabel属于具体的视图,有自己的侧重点
六、下一篇将持续更新配套知识点练习;
Email:dingding3w@126.com
iOS开发-UI 从入门到精通(一)的更多相关文章
- iOS开发-UI 从入门到精通(三)
iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...
- iOS开发-UI 从入门到精通(二)
iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...
- iOS开发-UI 从入门到精通(四)
一.UITextField 1.UITextField是什么? (1)UITextField(输入框):是控制文本输入和显示的控件.在App中UITextField出现频率也比较高: (2)iOS系统 ...
- iOS开发-UI 从入门到精通(五)
近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更 ...
- iOS开发UI篇—CAlayer(自定义layer)
iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...
- iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...
- iOS开发UI篇—懒加载
iOS开发UI篇—懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了, ...
- iOS开发UI篇—CAlayer层的属性
iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...
- iOS开发UI篇—CAlayer(创建图层)
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
随机推荐
- bootstrap中的Grid system详解
啦啦啦,都十月中旬啦,好快啊,这个月的多一半都过去了,然而我才写第三篇随笔,小颖得加油啦~~~ 下面来看下小颖给大家分享的内容 1. .col-md-*和.col-xs-* <!doctyp ...
- 平衡二叉树AVL插入
平衡二叉树(Balancedbinary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskiiand Landis)于1962年首先提出的,所以又称为AVL树. 定义:平衡二叉树或为 ...
- Android数据存储之Sqlite的介绍及使用
前言: 本来没有打算整理有关Sqlite数据库文章的,最近一直在研究ContentProvider的使用,所有觉得还是先对Sqlite进行一个简单的回顾,也方便研究学习ContentProvider. ...
- Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
前言 上一篇文章我们介绍了关于日志记录用的是Log4net,确实也很挺强大,但是别忘了我们.NET有专属于我们的日志框架,那就是NLog,相对于Log4net而言,NLog可以说也是一个很好的记录日志 ...
- Kubernetes集群搭建过程中遇到的问题
1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...
- html标签属性(attribute)和dom元素的属性(property)
简介 attribute和property都有属性之意,但对于attribute和property的区分其实并不难.从对象来说,attribute是html文档上标签属性, 而property则是对应 ...
- ECMAScript 6 开篇准备
1前言 该系列文章均为学习阮一峰老师<ECMAScript 6 入门>一书的学习笔记.原著:http://es6.ruanyifeng.com/ 各大浏览器的最新版本,对ES6的支持可以查 ...
- 浅析.NET的反射特性
在.net框架体系内,反射特性较多的应用到.反射的相关定义分为两种. 自然解释:射是一种自然现象,表现为受刺激物对刺激物的逆反应:这是反射的字面解释,我们看一下计算机编程中的反射: 编程解释:通过 S ...
- ASP.NET Core中的ActionFilter与DI
一.简介 前几篇文章都是讲ASP.NET Core MVC中的依赖注入(DI)与扩展点的,也许大家都发现在ASP.NET CORE中所有的组件都是通过依赖注入来扩展的,而且面向一组功能就会有一组接口或 ...
- autocad2008+C#2008开发中设置自动加载dll
一.复制编译后的dlll路径,比如我的是D:\zjy\cad开发\学习\宗地图\bin\Debug\zd.dll 二.随便找个地方新建一个记事本,在记事本中写入以下内容: (command " ...