UI控件13 UIImageView的使用方法

IOS--UIImageView的使用方法
//初始化
UIImageView  *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)];
 
//需要设置图片 UIImage
 
第一种:[imageView setImage:[UIImage imageNamed:@"1.jpeg"]];
 
//第二种:
NSString *filePath=[[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpeg"];
UIImage *images=[UIImage imageWithContentsOfFile:filePath];
//[imageView setImage:images]; 
 
//第三种:
NSData *data=[NSData dataWithContentsOfFile:filePath];
UIImage *image2=[UIImage imageWithData:data];
[imageView setImage:image2];
 

其中第一 二种属于一种,共两种:

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

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

    无论用哪种方式加载图像,图像使用结束后,一定要记得显示释放内存。    
3)注意:在实例化UIImageView的时候,使用initWithImage:进行实例化,或者后面设置image属性,而不再设置imageView的frame,imageView直接使用image的frame,那么,有两种情况:一是image本身比较小,那么就会按照image的frame大小显示。而如果image的frame太大,可能就会不显示,遇到这个问题可以使用frame初始化再设置属性image。
/**
 *  1:静态图片展示
 */
- (void)staticImageShow
{
    //1:UIImageView自己独有的初始化方法
    self.imageView1 = [[UIImageView alloc] initWithImage:self.image1];
    //2:这里imageView1的frame如果不设置,imageView1的frame就会默认为image1的frame,(在image1的frame小于屏幕的情况下),根据需要设置
    self.imageView1.frame = CGRectMake(100, 100, 100, 100);//设置frame属性,从UIView继承过来的属性
    self.imageView1.image = self.image2;//imageView1的图片可以通过image后期进行设置
    //3:用户交互属性
    self.imageView1.userInteractionEnabled = YES;//,默认是NO,如果需要加手势要设置为YES
    [self.view addSubview:self.imageView1];//父视图来添加子视图
}
 

 
// UIImageView的常用方法
    UIImage *oneImage = [UIImage imageNamed:@"max.png"]; // 使用ImageView通过name找到图片

    UIImageView *oneImageView = [[UIImageView alloc] initWithImage:oneImage]; //把oneImage添加到oneImageView上

    oneImageView.frame = CGRectMake(10, 10, 300, 300); // 设置图片位置和大小

    oneImageView.bounds = CGRectMake(10, 10, 280, 280); // 设置图片位置和大小,如果设置了frame,那么它这是的位置将不起作用

    oneImageView.backgroundColor = [UIColor redColor]; // 设置背景颜色

    oneImageView.alpha = 1.0; // 设置透明度

    

    

    oneImageView.contentMode = UIViewContentModeTop;

    // 有以下一些相对位置关系

//    UIViewContentModeScaleToFill

//    UIViewContentModeScaleAspectFit

//    UIViewContentModeScaleAspectFill

//    UIViewContentModeRedraw

//    UIViewContentModeCenter

//    UIViewContentModeTop

//    UIViewContentModeBottom

//    UIViewContentModeLeft

//    UIViewContentModeRight

//    UIViewContentModeTopLeft

//    UIViewContentModeTopRight

//    UIViewContentModeBottomLeft

//    UIViewContentModeBottomRight

    

    oneImageView.center = CGPointMake(150, 300); // 修改图片center的位置

    oneImageView.transform = CGAffineTransformMakeTranslation(20, 20); // 把一个图片移动一段距离 其中20表示想要往x或者y方向移动多少,而不是移动到多少。

    oneImageView.transform = CGAffineTransformMakeRotation(0.0f); // 旋转图像一定角度 注意:单位是弧度,而不是我们最常用的度数,所以可以写一个宏定义:#define degreesToRadians(x) (M_PI*(x)/180.0)

    oneImageView.transform = CGAffineTransformMakeScale(0.5, 0.5); // 其中,CGFloat scale_w与CGFloat scale_h分别表示将原来的宽度和高度缩放到多少倍,下图是缩放到原来的0.5倍

    

    // 为图片添加点击事件

    // 一定要先将userInteractionEnabled置为YES,这样才能响应单击事件

    oneImageView.userInteractionEnabled = YES; // 设置图片可以交互

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; // 设置手势

    [oneImageView addGestureRecognizer:singleTap]; // 给图片添加收拾

    

    

    oneImageView.hidden = NO;    // 隐藏或者显示图片 YES为隐藏

    [oneImageView sizeToFit];    // 将图片尺寸调整为与内容图片相同

    // oneImageView.highlightedImage = (UIImage *)hightlightedImage; // 设置高亮时显示的图片

    

    

    // 设置图片连续播放,实现动画效果

    oneImageView.animationImages = [NSArray arrayWithObjects:[UIImageimageNamed:@"max.png"], [UIImage imageNamed:@"min.png"], nil];

    oneImageView.animationDuration = 0.3f; // 设置循环一次的时间

    oneImageView.animationRepeatCount = 0; // 循环的次数。设置为0时无线循环

    [oneImageView startAnimating]; // 开始动画

    // [oneImageView stopAnimating]; // 停止动画

    

 

    // 获取网络中的图片

    UIImage *urlImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"www.baidu.com"]]];

 

    

    // 添加到View上,并释放内存

    [self.view addSubview:oneImageView];

    [oneImageView release], oneImageView = nil;

猜你喜欢

转载自blog.csdn.net/teropk/article/details/81393458