UIImageView和UIButton的区别

UIImageView和UIButton都可以添加图片,但两者在一些方面有很大区别:

1、显示图片

  • UIImageView只能有一种图片(图片默认填充整个UIImageView) image\setImage
  • UIButton能显示2种图片
    *背景 (背景会填充整个UIButton) setBackGroundImage: forState:
    *前置图片 (覆盖在背景上面的图片,按照之前的尺寸显示) setImage: forState:
    *能显示文字

2、点击事件

  • UIImageView默认不能响应点击事件
  • UIButton能响应点击事件:addTarget: action: forControlEvents:

3、使用场合

  • UIImageView只能显示图片,不监听点击事件,点击图片后不做任何反应
  • UIButton既能显示图片,又能监听点击,点击图片后能做一些额外的事情

4、继承结构

  • UIButton继承自UIControl,所以能添加监听器来监听事件
  • UIImageView直接继承自UIView,所以不能添加监听器来监听事件

5、UIImageView帧动画相关属性

@property(nonatomic,copy) NSArray *animationImages; // 播放图片所在数组,按照存储顺序播放
@property(nonatomic) NSTimeInterval animationDuration; // 动画持续时间,大部分以每个图片时间*图片总数
@property(nonatomic) NSInteger      animationRepeatCount; // 动画执行次数,默认执行无数次(0)
- (void)startAnimating; // 开始动画
- (void)stopAnimating; // 停止动画
- (BOOL)isAnimating; // 是否在执行

6、.plist文件读取内容

// 获取主目录
NSBundle *bundle = [NSBundle mainBundle];
// 根据文件名与后缀获取全目录
NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"];
// 获取文件中的Dictionary (这里也可以是NSArray)
dDictionary = [NSDictionary dictionaryWithContentsOfFile:path];

7、加载图片的两种方式

有缓存:
UIImage *image = [UIImage imageNamed:imageName];

无缓存:
// 全路径
NSString *path = [[NSBundle mainBundle] pathForResource:imageName ofType:nil];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];

在图片较小或者常用到时用有缓存;图片较大或者不常用到时用无缓存

你可能感兴趣的:(UIImageView和UIButton的区别)