美文网首页iOS Developer
iOS学习之UIImage详解

iOS学习之UIImage详解

作者: bef86a0d8dfc | 来源:发表于2016-07-11 10:19 被阅读3431次

    两种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];

    相关文章

      网友评论

        本文标题:iOS学习之UIImage详解

        本文链接:https://www.haomeiwen.com/subject/jntjjttx.html