iOS Developer

iOS学习之UIImage详解

2016-07-11  本文已影响3431人  bef86a0d8dfc

两种image初始化方法

第一种初始化方法:适用于反复用回缓存图片

UIImage * image1 =[UIImage imageNamed:@"baby.jpg"];

UIImageView * imageView1= [[UIImageView alloc] initWithImage:image1];

imageView1.frame = self.view.frame;

[self.view addSubview:imageView1];

第二种初始化方法:不会缓存适用于用一次就不用的。

//NSString * imagePath = [[NSBundle mainBundle]pathForResource:@"baby.jpg" ofType:nil];

//UIImage * image1 = [UIImageimageWithContentsOfFile:imagePath];

UIImageView * imageView1= [[UIImageView alloc] initWithImage:image1];

imageView1.frame = self.view.frame;

[self.view addSubview:imageView1];

//从网络加载图片

//NSString * urlString = @"http://pic2.ooopic.com/01/03/51/25b1OOOPIC19.jpg";

////获取二进制流

//NSData * data = [NSDatadataWithContentsOfURL:[NSURL URLWithString:urlString]];

//NSData转换UIImage

UIImage * image1= [UIImage imageWithData:data];

//创建imageView

UIImageView* imageView1 = [[UIImageView alloc] initWithImage:image1];

imageView1.frame =self.view.frame;

//设置图片,更改图片显示样式

UIImage * image =[UIImage imageNamed:@"baby.jpg"];

UIImageView * imageview = [[UIImageView alloc]initWithFrame:CGRectMake(20, 50, 200, 200)];

imageview.backgroundColor = [UIColorgrayColor];

imageview.image = image;

//设置拉伸平铺等样式

//UIViewContentModeScaleToFill默认

//常用这种

imageview.contentMode = UIViewContentModeScaleAspectFill;

//根据控件的Bounds剪切超出的部分(切元的用,设置图片阴影的关闭)

imageview.clipsToBounds = YES;

contentMode属性

这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定:

UIViewContentModeScaleToFill

UIViewContentModeScaleAspectFit

UIViewContentModeScaleAspectFill

UIViewContentModeRedraw

UIViewContentModeCenter

UIViewContentModeTop

UIViewContentModeBottom

UIViewContentModeLeft

UIViewContentModeRight

UIViewContentModeTopLeft

UIViewContentModeTopRight

UIViewContentModeBottomLeft

UIViewContentModeBottomRight

注意以上几个常量,凡是没有带Scale的,当图片尺寸超过ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形,图片填充满frame(默认)。

UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。

//圆角半径

imageView.layer.cornerRadius =imageView.frame.size.width / 2;

//设置边框颜色

imageView.layer.borderColor = [UIColorblueColor].CGColor;

////设置边框宽度

imageView.layer.borderWidth = 2.f;

//设置阴影颜色

imageView.layer.shadowColor = [UIColoryellowColor].CGColor;

//设置阴影的大小和投影的位置

imageView.layer.shadowOffset = CGSizeMake(20, 20);

//设置阴影的透明度

imageView.layer.shadowOpacity = 0.3;

图片的拉伸

UIImage * image = [UIImageimageNamed:@"backgroundImage"];

//设置拉伸内边距(拉伸的是图形匡的内部没有拉伸四角四角是6像素)

//UIEdgeInsets insets = UIEdgeInsetsMake(6,6, 6, 6);

////设置拉伸图片

image = [imageresizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];

UIImageView * imageView = [[UIImageViewalloc] initWithImage:image];

imageView.frame= CGRectMake(20, 50, CGRectGetWidth(self.view.frame)-40, 50);

另一种方式,点击图片编辑找到要拉伸的图片,点击右下角Show Slicing选择拉伸方式即可。

//制作动图动画

NSMutableArray * array =[NSMutableArray array];

for (int i = 0; i < 5; i++) {

NSString * imageName = [NSStringstringWithFormat:@"hehua0%d",i+1];

UIImage * image = [UIImageimageNamed:imageName];

[array addObject:image];

}

UIImageView * imageView = [[UIImageViewalloc] initWithFrame:CGRectMake(100, 100, 200, 200)];

self.imageView = imageView;

//设置序列帧图像数组

imageView.animationImages = array;

//设置动画时间

imageView.animationDuration = 1;

//设置播放次数0代表无限次

imageView.animationRepeatCount = 0;

[self.viewaddSubview:imageView];

//开始播放动画

[imageViewstartAnimating];

//停止动画

[imageView stopAnimating];

上一篇下一篇

猜你喜欢

热点阅读