UIImageView

1.初始化

UIImageView? *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)];

??:fram和bounds的區(qū)別

我的理解是毛嫉,frame設(shè)置其位置和大小藕畔,而bounds只能設(shè)置其大小,其參數(shù)中的x皿哨、y不起作用即便是之前沒有設(shè)定frame屬性剃执,控件最終的位置也不是bounds所設(shè)定的參數(shù)薛闪。bounds實(shí)現(xiàn)的是將UIImageView控件以原來的中心為中心進(jìn)行縮放鲜屏。例如有如下代碼:

復(fù)制代碼 代碼如下:

imageView.frame = CGRectMake(0, 0, 320, 460);?

imageView.bounds = CGRectMake(100, 100, 160, 230);

執(zhí)行之后肉盹,這個imageView的位置和大小是(80昔驱, 115, 160上忍, 230)骤肛。

2.設(shè)置圖片

第一種:

[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的方式加載時窍蓝,系統(tǒng)會把圖像Cache到內(nèi)存腋颠。如果圖像比較大,或者圖像比較多吓笙,用這種方式會消耗很大的內(nèi)存淑玫,而且釋放圖像的內(nèi)存是一件相對來說比較麻煩的事情。例如:如果利用imageNamed的方式加載圖像到一個動態(tài)數(shù)組NSMutableArray面睛,然后將將數(shù)組賦予一個UIView的對象的animationImages進(jìn)行逐幀動畫絮蒿,那么這將會很有可能造成內(nèi)存泄露。并且釋放圖像所占據(jù)的內(nèi)存也不會那么簡單叁鉴。但是利用imageNamed加載圖像也有自己的優(yōu)勢土涝。對于同一個圖像系統(tǒng)只會把它Cache到內(nèi)存一次,這對于圖像的重復(fù)利用是非常有優(yōu)勢的幌墓。例如:你需要在一個TableView里重復(fù)加載同樣一個圖標(biāo)但壮,那么用imageNamed加載圖像冀泻,系統(tǒng)會把那個圖標(biāo)Cache到內(nèi)存,在Table里每次利用那個圖像的時候茵肃,只會把圖片指針指向同一塊內(nèi)存腔长。這種情況使用imageNamed加載圖像就會變得非常有效。

2)利用NSData方式加載時验残,圖像會被系統(tǒng)以數(shù)據(jù)方式加載到程序捞附。當(dāng)你不需要重用該圖像,或者你需要將圖像以數(shù)據(jù)方式存儲到數(shù)據(jù)庫您没,又或者你要通過網(wǎng)絡(luò)下載一個很大的圖像時鸟召,請盡量使用imageWithData的方式加載圖像。

無論用哪種方式加載圖像氨鹏,圖像使用結(jié)束后欧募,一定要記得顯示釋放內(nèi)存。

3.UIImageView的常用方法

UIImage *oneImage = [UIImage imageNamed:@"max.png"]; // 使用ImageView通過name找到圖片

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

oneImageView.frame = CGRectMake(10, 10, 300, 300); // 設(shè)置圖片位置和大小

oneImageView.bounds = CGRectMake(10, 10, 280, 280); // 設(shè)置圖片位置和大小仆抵,如果設(shè)置了frame跟继,那么它這是的位置將不起作用

oneImageView.backgroundColor = [UIColor redColor]; // 設(shè)置背景顏色

oneImageView.alpha = 1.0; // 設(shè)置透明度

4.contentMode屬性

oneImageView.contentMode = UIViewContentModeTop;

// 有以下一些相對位置關(guān)系

//? ? UIViewContentModeScaleToFill

//? ? UIViewContentModeScaleAspectFit

//? ? UIViewContentModeScaleAspectFill

//? ? UIViewContentModeRedraw

//? ? UIViewContentModeCenter

//? ? UIViewContentModeTop

//? ? UIViewContentModeBottom

//? ? UIViewContentModeLeft

//? ? UIViewContentModeRight

//? ? UIViewContentModeTopLeft

//? ? UIViewContentModeTopRight

//? ? UIViewContentModeBottomLeft

//? ? UIViewContentModeBottomRight

??:注意以上幾個常量,凡是沒有帶Scale的镣丑,當(dāng)圖片尺寸超過 ImageView尺寸時舔糖,只有部分顯示在ImageView中。UIViewContentModeScaleToFill屬性會導(dǎo)致圖片變形莺匠。UIViewContentModeScaleAspectFit會保證圖片比例不變金吗,而且全部顯示在ImageView中,這意味著ImageView會有部分空白趣竣。UIViewContentModeScaleAspectFill也會證圖片比例不變摇庙,但是是填充整個ImageView的,可能只有部分圖片顯示出來遥缕。具體效果可以自己嘗試卫袒,這里就不上圖了。

5.圖片的移動旋轉(zhuǎn)

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

oneImageView.transform = CGAffineTransformMakeTranslation(20, 20); // 把一個圖片移動一段距離 其中20表示想要往x或者y方向移動多少单匣,而不是移動到多少玛臂。

oneImageView.transform = CGAffineTransformMakeRotation(0.0f); // 旋轉(zhuǎn)圖像一定角度 注意:單位是弧度,而不是我們最常用的度數(shù)封孙,所以可以寫一個宏定義:#define degreesToRadians(x) (M_PI*(x)/180.0)

oneImageView.transform = CGAffineTransformMakeScale(0.5, 0.5); // 其中迹冤,CGFloat scale_w與CGFloat scale_h分別表示將原來的寬度和高度縮放到多少倍,下圖是縮放到原來的0.5倍

6.圖片點(diǎn)擊事件

// 一定要先將userInteractionEnabled置為YES虎忌,這樣才能響應(yīng)單擊事件

oneImageView.userInteractionEnabled = YES; // 設(shè)置圖片可以交互

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; // 設(shè)置手勢

[oneImageView addGestureRecognizer:singleTap]; // 給圖片添加收拾

7.設(shè)置圖片連續(xù)播放泡徙,實(shí)現(xiàn)動畫效果

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

oneImageView.animationDuration = 0.3f; // 設(shè)置循環(huán)一次的時間

oneImageView.animationRepeatCount = 0; // 循環(huán)的次數(shù)。設(shè)置為0時無線循環(huán)

[oneImageView startAnimating]; // 開始動畫

// [oneImageView stopAnimating]; // 停止動畫

8.獲取網(wǎng)絡(luò)中的圖片

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

9.按鈕和圖片的結(jié)合

1)ImageView和Button的比較

Button按鈕的內(nèi)部可以放置多張圖片(4)膜蠢,而ImageView中只能放置一張圖片堪藐。

(2)說明:

ImageView只能顯示一張圖片莉兰,我們知道所有的ui控件都繼承自UIView,所有的視圖都是容器礁竞,容易意味著還能往里邊加?xùn)|西糖荒。那么能否在ImageView中加上按鈕呢?

(3)在ImageView中添加按鈕的操作

通常有兩種方式創(chuàng)建控件模捂,一是直接在storyboard或xib界面設(shè)計(jì)器上拖拽捶朵,另一種方式是使用手寫代碼的方式創(chuàng)建。

在界面設(shè)計(jì)器上面拖拽的無法在ImageView中添加按鈕狂男,那么我們嘗試一下手寫代碼综看。

前提是背景圖片屬性 imageView.userInteractionEnabled = YES;否則按鈕是沒響應(yīng)的。

10.其他的一些屬性

imageView.hidden = YES或者NO;? ? // 隱藏或者顯示圖片?

imageView.alpha = (CGFloat) al;? ? // 設(shè)置透明度?

imageView.highlightedImage = (UIImage *)hightlightedImage; // 設(shè)置高亮?xí)r顯示的圖片?

imageView.image = (UIImage *)image; // 設(shè)置正常顯示的圖片

?[imageView sizeToFit];? ? // 將圖片尺寸調(diào)整為與內(nèi)容圖片相同

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岖食,一起剝皮案震驚了整個濱河市红碑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泡垃,老刑警劉巖析珊,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔑穴,居然都是意外死亡唾琼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門澎剥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赶舆,你說我怎么就攤上這事哑姚。” “怎么了芜茵?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵叙量,是天一觀的道長。 經(jīng)常有香客問我九串,道長绞佩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任猪钮,我火速辦了婚禮品山,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烤低。我一直安慰自己肘交,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布扑馁。 她就那樣靜靜地躺著涯呻,像睡著了一般凉驻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上复罐,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天涝登,我揣著相機(jī)與錄音,去河邊找鬼效诅。 笑死胀滚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的填帽。 我是一名探鬼主播蛛淋,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼篡腌!你這毒婦竟也來了褐荷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嘹悼,失蹤者是張志新(化名)和其女友劉穎叛甫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杨伙,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡其监,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了限匣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抖苦。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖米死,靈堂內(nèi)的尸體忽然破棺而出锌历,到底是詐尸還是另有隱情,我是刑警寧澤峦筒,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布究西,位于F島的核電站,受9級特大地震影響物喷,放射性物質(zhì)發(fā)生泄漏卤材。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一峦失、第九天 我趴在偏房一處隱蔽的房頂上張望扇丛。 院中可真熱鬧,春花似錦尉辑、人聲如沸晕拆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实幕。三九已至吝镣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昆庇,已是汗流浹背末贾。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留整吆,地道東北人拱撵。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像表蝙,于是被迫代替她去往敵國和親拴测。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果府蛇,實(shí)現(xiàn)這些動畫的過程并不復(fù)雜集索,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,101評論 5 13
  • 在iOS中隨處都可以看到絢麗的動畫效果汇跨,實(shí)現(xiàn)這些動畫的過程并不復(fù)雜务荆,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,469評論 6 30
  • 本文轉(zhuǎn)載自:http://www.cocoachina.com/ios/20150106/10840.html 為...
    idiot_lin閱讀 632評論 0 1
  • 一穷遂、UIImageView 基本屬性 1 創(chuàng)建UIImageView對象 2 設(shè)置尺寸 3 設(shè)置背景顏色 4 設(shè)置...
    vip4iPhonr閱讀 287評論 0 1
  • UIImageView 文檔函匕,https://developer.apple.com/reference/uiki...
    阿斯蘭iOS閱讀 2,210評論 0 0