IOS--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的方式加載圖像。

    無論用哪種方式加載圖像,圖像使用結束后,一定要記得顯示釋放內存。    

 

 
// 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;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM