1.ios4提供的方法:
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
stretchableImageWithLeftCapWidth 的使用
這個(gè)函數(shù)是UIImage的一個(gè)實(shí)例函數(shù)望伦,它的功能是創(chuàng)建一個(gè)內(nèi)容可拉伸鸵膏,而邊角不拉伸的圖片椒袍,需要兩個(gè)參數(shù),第一個(gè)是左邊不拉伸區(qū)域的寬度惹想,第二個(gè)參數(shù)是上面不拉伸的高度。
根據(jù)設(shè)置的寬度和高度,將接下來(lái)的一個(gè)像素進(jìn)行左右擴(kuò)展和上下拉伸氧映。
注意:可拉伸的范圍都是距離leftCapWidth后的1豎排像素钧萍,和距離topCapHeight后的1橫排像素褐缠。
參數(shù)的意義是,如果參數(shù)指定10风瘦,5队魏。那么,圖片左邊10個(gè)像素,上邊5個(gè)像素胡桨。不會(huì)被拉伸官帘,x坐標(biāo)為11和一個(gè)像素會(huì)被橫向復(fù)制,y坐標(biāo)為6的一個(gè)像素會(huì)被縱向復(fù)制昧谊。注意:只是對(duì)一個(gè)像素進(jìn)行復(fù)制到一定寬度刽虹。而圖像后面的剩余像素也不會(huì)被拉伸。
imageView.image= [[UIImage imageNamed:@"image"] stretchableImageWithLeftCapWidth:15 topCapHeight:15];
2.ios5提供的方法
- (UIImage *)resizableImageCapInsets:(UIEdgeInsets)Insets
其中Insets這個(gè)參數(shù)的格式是(top,left,bottom,right)呢诬,從上涌哲、左、下尚镰、右分別在圖片上畫了一道線阀圾,這樣就給一個(gè)圖片指定了一個(gè)矩形區(qū)域。只有在框里面的部分才會(huì)被拉伸钓猬,而框外面的部分則保持不變稍刀。比如(20,5,10,5),意思是下圖矩形里面的部分可以被拉伸敞曹,而其余部分不變账月。
3.ios6提供的方法:
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
關(guān)于Insets參數(shù),與ios5是相同的澳迫,不同的是其后增加了一個(gè)拉伸的模式局齿,ios6.0的版本提供了UIImageResizingModeTile和 UIImageResizingModeStretch兩種模式,從名字就可以看出橄登,是平鋪模式和拉伸模式抓歼。平鋪就是復(fù)制你Insets指定的矩形區(qū)域塊來(lái)填充你所指定的圖片區(qū)域,而拉伸就是通過拉伸你Insets指定的矩形區(qū)域塊來(lái)填充你 所需的圖片區(qū)域拢锹。我想谣妻,相較4.0的進(jìn)步你也看出來(lái)了,是明顯的吧卒稳,相較于以前的蹋半,圖片的resize由一個(gè)點(diǎn)變成了一個(gè)矩形塊,這樣你的所指定塊的漸變效果充坑,也是可以呈現(xiàn)出來(lái)的减江。
只是,如果你需要兼容4.0的機(jī)器的話捻爷,那么還是需用老的函數(shù)來(lái)完成對(duì)圖片的resize操作的辈灼。