您的位置:首页 > 产品设计 > UI/UE

IOS开发-UIImageView的使用-UIImageView与UIButton的区别

2015-05-06 18:03 513 查看
一.概述:

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

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

2.UIImageView与UIButton的区别

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

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

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

// 方式1
UIImageView *icon1 = [[UIImageView alloc] init];
// 设置位置
icon1.frame = CGRectMake(0, 0, 375, 667);
// setImage设置图片
[icon1 setImage:[UIImage imageNamed:@"ping"]];
[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所以显示了另外一张图片





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

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





此属性的取值通常如下:

typedef NS_ENUM(NSInteger, UIViewContentMode) {
UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,
};


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

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

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

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







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,他们一个能显示文字一个可现实图片。



3. UIImageView与UIButton的使用场合

UIButton:需要显示图片,点击图片后需要做一些特定的操作
UIImageView:仅仅需要显示图片,点击图片后不需要做任何事
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐