IOS--UIImageView的使用方法
其中第一 二種屬於一種,共兩種:
1)用imageNamed的方式加載時,系統會把圖像Cache到內存。如果圖像比較大,或者圖像比較多,用這種方式會消耗很大的內存,而且釋放圖像的內存是一件相對來說比較麻煩的事情。例如:如果利用imageNamed的方式加載圖像到一個動態數組NSMutableArray,然后將將數組賦予一個UIView的對象的animationImages進行逐幀動畫,那么這將會很有可能造成內存泄露。並且釋放圖像所占據的內存也不會那么簡單。但是利用imageNamed加載圖像也有自己的優勢。對於同一個圖像系統只會把它Cache到內存一次,這對於圖像的重復利用是非常有優勢的。例如:你需要在一個TableView里重復加載同樣一個圖標,那么用imageNamed加載圖像,系統會把那個圖標Cache到內存,在Table里每次利用那個圖像的時候,只會把圖片指針指向同一塊內存。這種情況使用imageNamed加載圖像就會變得非常有效。
2)利用NSData方式加載時,圖像會被系統以數據方式加載到程序。當你不需要重用該圖像,或者你需要將圖像以數據方式存儲到數據庫,又或者你要通過網絡下載一個很大的圖像時,請盡量使用imageWithData的方式加載圖像。
無論用哪種方式加載圖像,圖像使用結束后,一定要記得顯示釋放內存。
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;
