UIImageView應(yīng)用細節(jié)

  • 1、設(shè)置動畫
// 1)添加imageView
 UIImageView *imageView = [[UIImageView alloc]
initWithFrame:self.bounds];
// 2)動畫照片數(shù)組
NSMutableArray*arrM = [NSMutableArrayarray];
 for (inti = 1; i < 9;i++) {
     UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
     [arrM addObject:image];   
 }
// 3)給照片數(shù)組賦給imageView的動畫數(shù)組
 imageView.animationImages = arrM;
// 4)設(shè)置動畫播放屬性
 imageView.animationRepeatCount =1;
 imageView.animationDuration =0.5;
// 5)開始動畫
 [imageView startAnimating];
 [self addSubview:imageView];
  • 2、將圖片按原始尺寸添加到ImageView上

    • 1)storyboard或xib中實現(xiàn):
      在imageView的Mode屬性中設(shè)置center;

    • 2)在圖片中實現(xiàn):
      1】


      Snip20150827_4.png

      2】


      Snip20150827_5.png

      3】在render As中選擇Original Image即可
      Snip20150827_7.png
    • 3)代碼實現(xiàn):

    // 調(diào)用UIImage的對象方法---設(shè)置UIImageRenderingMode參數(shù)為: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)圖片中實現(xiàn):
    1】
![Snip20150827_4.png](http://upload-images.jianshu.io/upload_images/739097-bcaf1594a594aa38.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    2】
![Snip20150827_5.png](http://upload-images.jianshu.io/upload_images/739097-301ecd7bce15cba7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    3】在Slices中選擇Horizontal and Vertical即可
![Snip20150827_8.png](http://upload-images.jianshu.io/upload_images/739097-5e2e6c8238da549f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 2)代碼實現(xiàn):

```objc
  // 調(diào)用UIImage的對象方法---設(shè)置UIImageRenderingMode參數(shù)為: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:圖片水平拉伸的點,設(shè)為0.5,即是從水平中點拉伸
     * topCapHeight:圖片豎直拉伸的點,設(shè)為0.5,即是從豎直中點拉伸
    */
   return[image stretchableImageWithLeftCapWidth:0.5topCapHeight:0.5];
}
  • 4、將矩形圖片截成圓角圖片:圖層方法和繪畫方法
      1. 利用圖層實現(xiàn):
   // 設(shè)置頭像圓角半徑
   self.titleImage.layer.cornerRadius =self.titleImage.frame.size.width*0.5;
   //切除圓角以外部分
    self.titleImage.layer.masksToBounds= YES;
   //設(shè)置圓角邊緣寬度(如果不需要邊緣,可省略)
    self.titleImage.layer.borderWidth= 8;
    //設(shè)置邊框顏色
    self.titleImage.layer.borderColor= [UIColorcolorWithRed:36/225.0green:36/225.0blue:36/225.0alpha:1].CGColor;
  • 2)利用繪畫實現(xiàn)
// 給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();
    // 關(guān)閉上下文
    UIGraphicsEndImageContext();
  return image;
}

特別提醒:
雖然圖層比繪畫實現(xiàn)起來簡單,但是通過圖層設(shè)置時,系統(tǒng)內(nèi)部會進行一系列的底層操作,從而會導致內(nèi)部運行不流暢,尤其是多個控件的圖片通過圖層設(shè)置成圓角圖片。
建議:
1、涉及較少量的圖片進行圓角圖片設(shè)置時,可運用圖層設(shè)置;
2、如果是很多圖片進行圓角圖片設(shè)置時,最好使用繪畫,不會太消耗內(nèi)部資源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,696評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,270評論 5 13
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫,核心動畫,幀動畫,自定義轉(zhuǎn)場動畫。 1.UIView...
    請叫我周小帥閱讀 3,326評論 1 23
  • 顯式動畫 顯式動畫,它能夠?qū)σ恍傩宰鲋付ǖ淖远x動畫,或者創(chuàng)建非線性動畫,比如沿著任意一條曲線移動。 屬性動畫 ...
    清風沐沐閱讀 2,096評論 1 5
  • Core Animation其實是一個令人誤解的命名。你可能認為它只是用來做動畫的,但實際上它是從一個叫做Laye...
    小貓仔閱讀 3,968評論 1 4

友情鏈接更多精彩內(nèi)容