UI控件

1.怎么解决缓存池慢的情况

iOS不存在缓存池慢的情况,因为通常我们iOS开发中,对象都是在需要的时候才会创建,有种常用的做法叫做懒加载,还有在UITableView中一半只会创建刚开始出现在屏幕中的cell,之后都是从缓存池里取,不会创建新对象,缓存池里最多也就一两个对象,缓存池满的情况一半在开发Java中比较常见,Java中一般吧最近最少使用的对象先释放。

2.CAAnimation的层级结构
CAAnimation

CAPropertyAnimation: 属性动画,是一个基类,一般使用它的两个子类:CABasicAnimation和CAKeyframeAnimation.主要作用于CALayer的属性,使其产生动画效果.

CAAnimation 详解

3.UIButton与UITableView的层级结构
    1. 继承结构

UIButton -> UIControl -> UIView -> UIResponder -> NSObject

UITableView -> UIScrollView -> UIView -> UIResponder -> NSObject

    1. 内部子控件结构

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控件的事件传递的具体过程

史上最详细的iOS之事件的传递和响应机制-原理篇

7.控制器view的声明周期及相关函数是什么?你在开发中是如何利用的?
  • 1.首先判断控制器是否有视图,如果没有就调用LoadView方法创建:通过stroyboard或者代码
  • 2.随后调用viewDidLoad,可以进行下一步的初始化操作:只会被调用一次
  • 3.在视图显示之前调用viewWillAppear:该函数可以多次调用
  • 4.视图显示之前调用viewWillDisappear:处理保存当前视图的一些信息(如需要)
  • 5.在布局变化前后,调用viewWillDidLayoutSubviews处理相关信息

你可能感兴趣的:(UI控件)