这是我参与「第四届青训营 」笔记创作活动的的第11天
App入门与UIKit简介(下)| 青训营笔记
UIKit实战
自学部分
storyboard(拖拽UI)
- Action操作
- 响应式操作,运行函数
- Outlet属性
- 读写属性
- 第一响应者
- resignFirstResponder
- [self.view endEditing:Yes]
- 按钮
- UI组件
- frame,类型CGRect
- 坐标origin:左上角
- x
- y
- 大小size
- width
- height
- 坐标origin:左上角
- center,类型CGPoint,中心点
- x
- y
- bounds,类型CGRect,大小
- origin的xy始终为0
- size有height/width
- frame,类型CGRect
- 修改OC对象中的结构体属性,要先取值,操作,再重新赋值
- 简易动画
- 头尾式
- 开启:[UIView beginAnimations:nil context:nil];
- 设置执行时间:[UIView setAnimationDuration:2];
- //代码
- 提交动画:[UIView commitAnimations];
- block式
- [UIView animateWithDuration:0.5 animations:^{代码}];
- 头尾式
- 如果没有按预期执行:关闭自动布局
- storyboard的属性,use Autolayout
动态加载UI组件(用代码)
- 生命周期:app显示页面过程
- 创建要显示界面的控制器ViewController
- 创建控制器管理的view
- View加载完毕后,执行控制器ViewController里的方法
- viewDidLoad{}
- View创建并加载完成时执行:动态创建的按钮/其他组件,应该在这里声明
- 动态创建按钮
- 创建按钮
- UIButton *button = [[UIButton alloc] init];
- 初始化&设置
- 文字[button setTitle:@“x” forState:UIControlStateNormal];
- 文字颜色[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
- 背景图片[button setBackgroundImage:[UIImage imageNamed:@“btn_01”] forState:UIControlStateNormal];
- 设置大小butotn.frame = CGRectMake(50,100,100,100);
- 添加事件
- Button addTarget:(id触发对象) action:(SEL回调函数) forControlEvents:(UIControlEvents事件名)
- 定义回调函数
- 将动态创建的按钮,加入控制器管理的view中
- [self.view addSubview:button];
- 创建按钮
UICollectionView
- UICollectionView UI基本单元:4个部分
- 内容基本单元:Cell
- 章节:Section
- 扩充视图:章节的header和footer
- 装饰视图:背景视图backgroundView
- UICollectionView核心
- 布局:Layout
- 数据代理:DataSource
- 遵循UICollectionviewDatasource协议
- 行为代理:Delegate
- 遵循UICollectionViewDelegate协议
- 数据代理协议UICollectionViewDatasource中的4个方法
- 指定Section有多少Cell:collectionView:numberOfItemsInSection:
- 指定视图中节的个数:numberOfSectionsInCollectionView:
- 指定单元格显示的数据:collectionView:cellForItemAtIndexPath:
- 指定补充视图显示的数据:collectionView:viewForSupplementaryElementOfKind:atIndexPath:
- 集合视图单元格(自定义继承自UICollectionViewCell)
- 每个单元格都是一个View,需要在视图的构造函数中实例化属性
- 重用单元格:
- 需要在初始化时注册需要重用的cell
- 可重用单元格标识identifier:通过可重用单元格标识符可以**从集合视图中获取可重用的单元格。
//注册可重用Cell,如在viewDidLoad中注册
[self registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"AACells"]:
[self registerClass:[customizedCollectionViewCell class] forCellWithReuseIdentifier:@"BBCells"];
(UICollectionViewCell *)collectionView: (UICollectionView *)collectionView cellForItemAtIndexpath: (NSIndexpath *) indexpath
// 从Cell可重用队列中根据Identifier取出Cell
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier: @"AACells" forIndexPath: indexPathl:
cell.backgroundColor = [UIColor redColor];
return cell;