天天看点

UIImage使用简介

三种方式创建UIImage

用imageNamed函数

[UIImage imageNamed:ImageName];
      

用imageNamed的方式加载时,系统会把图像Cache到内存。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的内存是一件相对来说比较麻烦的事情。例如:如果利用imageNamed的方式加载图像到一个动态数组NSMutableArray,然后将将数组赋予一个UIView的对象的animationImages进行逐帧动画,那么这将会很有可能造成内存泄露。并且释放图像所占据的内存也不会那么简单。但是利用imageNamed加载图像也有自己的优势。对于同一个图像系统只会把它Cache到内存一次,这对于图像的重复利用是非常有优势的。例如:你需要在一个TableView里重复加载同样一个图标,那么用imageNamed加载图像,系统会把那个图标Cache到内存,在Table里每次利用那个图像的时候,只会把图片指针指向同一块内存。这种情况使用imageNamed加载图像就会变得非常有效。

用NSData的方式加载,例如:

NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
 NSData *image = [NSData dataWithContentsOfFile:filePath];
 [UIImage imageWithData:image];
      

利用NSData方式加载时,图像会被系统以数据方式加载到程序。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,请尽量使用imageWithData的方式加载图像。

获取远程图片

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/img/baidu_sylogo1.gif"];
UIImage *imagea = [UIImage imageWithData: [NSDatadataWithContentsOfURL:url]];
//UIImageView *iv;
iv.image=imagea;
      

方向

一个图像的方向,决定了它在屏幕上如何被旋转。因为iPhone 能被以6种不同的方式握持,所以在方向改变时,能够将图像做相应的旋转就十分必要了。UIImage 有个只读属性 imageOrientation 来标识它的方向。

UIImageOrientation myOrientation =  myImage.imageOrientation ;
      

可以设置以下方向:

typedef enum {  
    UIImageOrientationUp,            // default orientation  默认方向  
    UIImageOrientationDown,          // 180 deg rotation    旋转180度  
    UIImageOrientationLeft,          // 90 deg CCW         逆时针旋转90度  
    UIImageOrientationRight,         // 90 deg CW          顺时针旋转90度  
    UIImageOrientationUpMirrored,    // as above but image mirrored along other axis. horizontal flip   向上水平翻转  
    UIImageOrientationDownMirrored,  // horizontal flip    向下水平翻转  
    UIImageOrientationLeftMirrored,  // vertical flip      逆时针旋转90度,垂直翻转  
    UIImageOrientationRightMirrored, // vertical flip      顺时针旋转90度,垂直翻转  
} UIImageOrientation;  
      

为图片显示添加了阴影效果,具体代码如下

找到比較簡單的寫法
請先import QuartzCore.framework
#import <QuartzCore/QuartzCore.h>

[[myView layer] setShadowOffset:CGSizeMake(5, 5)];
[[myView layer] setShadowRadius:6];
[[myView layer] setShadowOpacity:1];
[[myView layer] setShadowColor:[UIColor blueColor].CGColor];

所有繼承UIView的object都能使用.      

继续阅读