## 序言 ##
UI的学习笔记, 学学记记有益身心健康
UI编程 第一讲 UIView及其子类
UI概述
UI(user interface) :用户界面, 用户能看到的各种各样的页面元素
iOS APP = 各种各样的UI控件 + 业务逻辑和算法
插曲
iOS发展到现在从最初的的iOS 2.0 到 iOS 7.0 经历了一些变化, 从最初的虚拟化实物, 注重光线 阴影的搭配, 到iOS 7.0 开始的以线条为主, 侧重体现了应用程序的地位.
UIWindow
iOS中, 一个程序通常只创建一个UIWindow, window的作用是将内容呈现给用户, 我们不会对window做太多操作.
创建window
通常window的大小和屏幕等大
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds];
window有许多属性, 不过基于不对window进行更多操作的原则, 我不在此处一一介绍, 具体可看view的属性.
UIView
view代表屏幕上的一个矩形区域,
不同的控件代表不同的UIView,
iOS中所有能看到的内容都是view或者其子类.
创建UIView的过程:
- 开辟空间初始化(初始化时要给出视图的位置和大小 (CGRect))
- 对视图进行一些类的设置, (背景颜色, 属性, 外观)
- 将视图添加到window中显示 (重要 如果不添加的话, 就不会在屏幕中显示)
- 释放视图对象.
注意:
UI中采用的是手动内存管理, 每次创建都要有一个对应的释放, 因此, 创建好工程后, 我们需要做以下四件事.
- 将自动内存管理改为手动内存管理.
- 重写 AppDelegate中的dealloc方法(添加释放 _window)
(如果创建其他View类, 也要重写dealloc方法, 释放实例变量) - 创建window时, 添加自动释放.
- 将实例变量中的(strong 改为 retain)
例子:
UIView *view = [[UIView alloc] initWithFrame:CGRect(100, 100, 100, 100)];
view.background = [UIColor blueColor];
[self.window addSubView: view];
[view release];
frame
frame是view的重要属性, 他决定了视图的大小和位置.
frame是一个结构体, 包含origin 和size
origin 和 size也是结构体, 分别包含x, y, weight, height.
frame 的origin 和 size 是相对于父视图来说的, 父视图的bounds改变, 子视图的布局也会改变
center是view的重要属性, 中心点
PS: iOS的布局是从从左上角建立坐标系, 水平向右, 水平向下 是正方法.
PS2: iPhone 6 的被划分为 375 677;
bounds
bounds边界也是view 的重要属性, 用于定义自己的边界, 他同frame一样是一个CGRect变量.
当一个view设置bounds时, 会将自己当做一个容器, 定义自己的边界和初始坐标
子视图添加到这个视图中时, 会根据bounds指定的(0, 0)计算frame, 而不是左上角.
添加视图
添加视图的方法
[superview insertSubView: grayView atIndex: 1];//在指定的index位置插入视图
[superview insertSubview: grayView aboveSubview: redView];//在指定的视图上面添加视图
[superview insertSubview: grayView blowSubview:redView];//在指定的视图下面添加视图
管理视图层次
略 自己看API 去.
视图的重要属性
包含不透明度, 获取父视图, 获取所有子视图, 标记视图.
PS:接下来控件的使用, 如无特殊情况, 我都不再写, 如遇问题, 请看API.
UILabel
控制文本显示