UI基础UIView、Storyboard
storyboard文件的认识
- 用来描述软件界面
- 默认情况下,程序已启动就会加载Main.stroyboard
- 加载storyboard时,会首先创建和显示箭头所指的控制器界面
IBAction和IBOutlet
- IBAciton
- 本质就是void
- 能让方法具备连线的功能
- IBOutlet
- 能然该属性具备连线的功能
storyboard连线容易出现的问题
- 连接的方法代码被删除,但是连线没有去掉
- 可能会出现方法找不到错误
- unrecognized selector sent to instance
- 连接的属性代码被删掉,但是连线没有去掉
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
UIViewController (控制器) 的认识
- 一个控制器负责管理一个大截面
- 控制器负责界面的创建、事件处理等
类扩展
- 格式
@interface 类名()
/** 属性、方法的声明 */
@end
- 作用
- 为某个类增加额外的属性和方法声明
- 可以写在 .h 和 .m 文件中
项目属性
- Product Name
- 软件名称、产品名称、项目名称
- Organization Identifier
- 公司的唯一表示
- 一般是公司域名的反写,比如com.XXX
- Bundle Identifier
- 软件的唯一标识
- 一般是Organization Identifier + Product Name
UIView的常见属性
- NSArray subviews
- 所有的子控件
- 数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)
UIView的常见方法
- addSubview:
- 添加一个子控件
- 使用这个方法添加的子控件会被塞到subviews数组的最后面
- 可以使用下面的方法调整子控件在subview数组中的顺序
// 将子控件view插入到subviews数组的index位置 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; // 将子控件view显示到子控件siblingSubview的下面 - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview; // 将子控件view显示到子控件siblingSubview的上面 - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview; // 将子控件view放到数组的最后面,显示在最上面 - (void)bringSubviewToFront:(UIView *)view; // 将子控件view放到数组的最前面,显示在最下面 - (void)sendSubviewToBack:(UIView *)view;