美文网首页
UIImageView应用细节

UIImageView应用细节

作者: 撸码是一种情怀 | 来源:发表于2015-08-27 14:34 被阅读100次
  • 1、设置动画
// 1)添加imageView
 UIImageView *imageView = [[UIImageView alloc]
initWithFrame:self.bounds];
// 2)动画照片数组
NSMutableArray*arrM = [NSMutableArrayarray];
 for (inti = 1; i < 9;i++) {
     UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
     [arrM addObject:image];   
 }
// 3)给照片数组赋给imageView的动画数组
 imageView.animationImages = arrM;
// 4)设置动画播放属性
 imageView.animationRepeatCount =1;
 imageView.animationDuration =0.5;
// 5)开始动画
 [imageView startAnimating];
 [self addSubview:imageView];
  • 2、将图片按原始尺寸添加到ImageView上

    • 1)storyboard或xib中实现:
      在imageView的Mode属性中设置center;

    • 2)在图片中实现:
      1】


      Snip20150827_4.png

      2】


      Snip20150827_5.png
      3】在render As中选择Original Image即可
      Snip20150827_7.png
    • 3)代码实现:

    // 调用UIImage的对象方法---设置UIImageRenderingMode参数为:UIImageRenderingModeAlwaysOriginal
     - (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode;
    
    // 示例:如果一个项目中多处用到以上方法:即将图片按原尺寸添加,可以给UIImage添加一个分类:
    
    // 1】.h文件
    @interface UIImage (Image)
    // 快速的返回一个最原始的图片
    + (instancetype)imageWithOriRenderingImage:(NSString *)imageName;
    @end
    
     // 2】.m文件
     #import <UIKit/UIKit.h>
     #import "UIImage+Image.h"
    @implementation UIImage (Image)
    + (instancetype)imageWithOriRenderingImage:(NSString *)imageName
    {
      UIImage *image = [UIImage imageNamed:imageName];
      // UIImageRenderingModeAlwaysOriginal--保持原始图片模式
      return[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    }
    
    @end
    
- 3、将小图片拉伸填充ImageView---并保证拉伸后的像素与之前一样
 - 1)图片中实现:
    1】
![Snip20150827_4.png](https://img.haomeiwen.com/i739097/bcaf1594a594aa38.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    2】
![Snip20150827_5.png](https://img.haomeiwen.com/i739097/301ecd7bce15cba7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    3】在Slices中选择Horizontal and Vertical即可
![Snip20150827_8.png](https://img.haomeiwen.com/i739097/5e2e6c8238da549f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 2)代码实现:

```objc
  // 调用UIImage的对象方法---设置UIImageRenderingMode参数为:UIImageRenderingModeAlwaysOriginal
  - (UIImage *)stretchableImageWithLeftCapWidth:  topCapHeight: ;

  // 示例:如果一个项目中多处用到以上方法:即将图片图片拉伸添加,可以给UIImage添加一个分类:
  // .h 文件
  #import <UIKit/UIKit.h>
  @interface UIImage (ICKImage)

  + (UIImage *)imageWithStretchableImageName:(NSString *)imageName;

  @end

  // .m 文件
  + (UIImage *)imageWithStretchableImageName:(NSString *)imageName
{
   UIImage *image = [UIImage imageNamed:imageName];
   /*
     * LeftCapWidth:图片水平拉伸的点,设为0.5,即是从水平中点拉伸
     * topCapHeight:图片竖直拉伸的点,设为0.5,即是从竖直中点拉伸
    */
   return[image stretchableImageWithLeftCapWidth:0.5topCapHeight:0.5];
}
  • 4、将矩形图片截成圆角图片:图层方法和绘画方法
      1. 利用图层实现:
   // 设置头像圆角半径
   self.titleImage.layer.cornerRadius =self.titleImage.frame.size.width*0.5;
   //切除圆角以外部分
    self.titleImage.layer.masksToBounds= YES;
   //设置圆角边缘宽度(如果不需要边缘,可省略)
    self.titleImage.layer.borderWidth= 8;
    //设置边框颜色
    self.titleImage.layer.borderColor= [UIColorcolorWithRed:36/225.0green:36/225.0blue:36/225.0alpha:1].CGColor;
  • 2)利用绘画实现
// 给image添加一个圆角图片方法
-(UIImage*)circleImage
{
    // 开启图片上下文
    UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
    // 获取图片上下文
    CGContextRefctx = UIGraphicsGetCurrentContext();
    // 给上下文添加一个圆
    CGRect circle =CGRectMake(0,0, self.size.width,self.size.height);
    CGContextAddEllipseInRect(ctx, circle);
    // 剪切图片上下文
    CGContextClip(ctx);
    // 将图片画至剪切的上下文
    [self drawInRect:circle];
    // 从上下文获取图片
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    // 关闭上下文
    UIGraphicsEndImageContext();
  return image;
}

特别提醒:
虽然图层比绘画实现起来简单,但是通过图层设置时,系统内部会进行一系列的底层操作,从而会导致内部运行不流畅,尤其是多个控件的图片通过图层设置成圆角图片。
建议:
1、涉及较少量的图片进行圆角图片设置时,可运用图层设置;
2、如果是很多图片进行圆角图片设置时,最好使用绘画,不会太消耗内部资源。

相关文章

网友评论

      本文标题:UIImageView应用细节

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