UI控件
2018-07-10 本文已影响14人
Jorunk
1.怎么解决缓存池慢的情况
iOS不存在缓存池慢的情况,因为通常我们iOS开发中,对象都是在需要的时候才会创建,有种常用的做法叫做懒加载,还有在UITableView中一半只会创建刚开始出现在屏幕中的cell,之后都是从缓存池里取,不会创建新对象,缓存池里最多也就一两个对象,缓存池满的情况一半在开发Java中比较常见,Java中一般吧最近最少使用的对象先释放。
2.CAAnimation的层级结构
CAAnimationCAPropertyAnimation: 属性动画,是一个基类,一般使用它的两个子类:CABasicAnimation和CAKeyframeAnimation.主要作用于CALayer的属性,使其产生动画效果.
3.UIButton与UITableView的层级结构
- 继承结构
UIButton -> UIControl -> UIView -> UIResponder -> NSObject
UITableView -> UIScrollView -> UIView -> UIResponder -> NSObject
- 内部子控件结构
UIButton内部子控件结构: 默认有两个, 一个UIImageView, 一个UILable, 分别可以设置图片和文字, button设置属性基本都是set方法
UITableView内部子控件结构: UITableView中每一行数据都是UITableViewCell, UITableViewCell内部有一个UIView控件 (contentView, 作为其它元素的父控件) , 两个UILable 控件 (textLable, detailTextLable) , 一个UIImageView控件 (imageView) , 分别用于容器, 显示内容, 详情和图片
4.如何渲染自定义格式字符串的UILable
- 通过NSAttributeString类
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"你好"];
//设置文字颜色
[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,1)];
//设置字体
[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:NSMakeRange(1, 2)];
}
5.设置scrollView的contentSize能在viewDidLoad里设置吗?为什么?
- 能
- 当时,view刚刚创建,尺寸未确定
6.按钮或其他UIView控件的事件传递的具体过程
7.控制器view的声明周期及相关函数是什么?你在开发中是如何利用的?
- 1.首先判断控制器是否有视图,如果没有就调用LoadView方法创建:通过stroyboard或者代码
- 2.随后调用viewDidLoad,可以进行下一步的初始化操作:只会被调用一次
- 3.在视图显示之前调用viewWillAppear:该函数可以多次调用
- 4.视图显示之前调用viewWillDisappear:处理保存当前视图的一些信息(如需要)
- 5.在布局变化前后,调用viewWillDidLayoutSubviews处理相关信息