一.概述:

UIImageView根据名字可以知道就是用来显示图片的,本文主要总结了三个知识点

1.使用UIImageView显示图片的常用的几种方式

2.UIImageView与UIButton的区别

二. 使用UIImageView显示图片的常用的几种方式

1》》》》创建UIImageView对象的几种方式。

1. UIImageView *icon1 = [[UIImageView alloc] init];创建没有初始化的UIImageView对象



1       // 方式1
2       UIImageView *icon1 = [[UIImageView alloc] init];
3       // 设置位置
4       icon1.frame = CGRectMake(0, 0, 375, 667);
5       // setImage设置图片
6       [icon1 setImage:[UIImage imageNamed:@"ping"]];
7       [self.view addSubview:icon1];



2.UIImageView *icon2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fuguizhu"]];

 创建已经初始化图片的UIImageView对象,但需要设置尺寸及位置才可以显示。



UIImageView *icon2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ping"]];
    // 设置位置及尺寸
    icon2.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    [self.view addSubview:icon2];



3.UIImageView *icon3 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,300, 400)];

 创建已经初始化了位置和尺寸的UIImageView对象,需要设置要显示的图片



UIImageView *icon3 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
     // setImage设置图片
    [icon3 setImage:[UIImage imageNamed:@"ping"]];
    [self.view addSubview:icon3];



4.- (instancetype)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage 

 创建已经初始化了默认状态和高亮状态要显示的图片的UIImageView对象,当highlighted属性为YES时显示highlightedImage 图片。



UIImageView *icon4 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ping"] highlightedImage:[UIImage imageNamed:@"fuguizhu"]];
      // 设置位置
      icon4.frame = CGRectMake(0, 0, 375, 667);
     //显示高亮状态的图片
      icon4.highlighted = YES;
     [self.view addSubview:icon4];



上面四种方式显示效果如下图,前三种是相同的,第四种由于打开了highlighted所以显示了另外一张图片

ios 给uiview添加蒙层 ios uiimageview_ios 给uiview添加蒙层

ios 给uiview添加蒙层 ios uiimageview_显示图片_02

2》》》UIImageView控件的contentMode属性:

这个属性是设置图片在手机中显示方式,比如是否居中、是否拉伸等对应storyboard中的右侧的视图如下:

ios 给uiview添加蒙层 ios uiimageview_显示图片_03

    

ios 给uiview添加蒙层 ios uiimageview_ios 给uiview添加蒙层_04

此属性的取值通常如下:


1 typedef NS_ENUM(NSInteger, UIViewContentMode) {
 2     UIViewContentModeScaleToFill,
 3     UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
 4     UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
 5     UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
 6     UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
 7     UIViewContentModeTop,
 8     UIViewContentModeBottom,
 9     UIViewContentModeLeft,
10     UIViewContentModeRight,
11     UIViewContentModeTopLeft,
12     UIViewContentModeTopRight,
13     UIViewContentModeBottomLeft,
14     UIViewContentModeBottomRight,
15 };


上面枚举常量中,不带Scale的常量值表示,当图片的尺寸超过了UIImageView设定的尺寸时之后显示一部分。

UIViewContentModeScaleToFill:会填充整个UIImageView区域,会导致图片产生形变除非设定的范围和图片的比例一样。默认是此值。

UIViewContentModeScaleAspectFit:会保证图片的比例不变全部显示在UIImageView区域但是会出现空白区域。

UIViewContentModeScaleAspectFill:综合以上两者,即全部填充UIImageView区域也不会产生比例的变化,这样就意味着,不会显示完全.

ios 给uiview添加蒙层 ios uiimageview_初始化_05

           

ios 给uiview添加蒙层 ios uiimageview_显示图片_06

         

ios 给uiview添加蒙层 ios uiimageview_显示图片_07

UIViewContentModeScaleToFill      UIViewContentModeScaleAspectFit     UIViewContentModeScaleAspectFill

2.UIImageView与UIButton的区别

我们知道UIImageView与UIButton都能显示图片

  1)UIButton能够监听点击事件而UIImageView不能。

 原因:UIButton之所以能够添加监听器是因为他继承自UIControl反之只要是继承自UIControl的类都能添加监听事件,UIControl的类里面有个添加监听事件的方法:


- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;


  UIImageView不能添加事件因为它直接继承自最纯洁的UIView。

2)UIButton既能显示文字又能显示图片,而UIImageView只能显示图片。

   看UIButton的两个属性:


@property(nonatomic,readonly,retain) UILabel     *titleLabel NS_AVAILABLE_IOS(3_0);
@property(nonatomic,readonly,retain) UIImageView *imageView  NS_AVAILABLE_IOS(3_0);


UIButton里面包含了UILabel和UIImageView,他们一个能显示文字一个可现实图片。

ios 给uiview添加蒙层 ios uiimageview_ios 给uiview添加蒙层_08

3. UIImageView与UIButton的使用场合


UIButton:需要显示图片,点击图片后需要做一些特定的操作


UIImageView:仅仅需要显示图片,点击图片后不需要做任何事