做過(guò)IM的童鞋都知道氣泡聊天,那么怎么實(shí)現(xiàn)氣泡隨著內(nèi)容的長(zhǎng)短變化而做到不拉伸呢骨坑,很簡(jiǎn)單共屈,蘋(píng)果為我們提供了API,可以讓我們一步到位?
resizableImageWithCapInsets:<#(UIEdgeInsets)#> resizingMode:<#(UIImageResizingMode)#>
其中UIEdgeInsets表示是你不想被拉伸的距離今瀑,UIEdgeInsets在蘋(píng)果定義里是個(gè)結(jié)構(gòu)體程梦,里面的參數(shù)分別表示(上点把,左,下屿附,右)
typedef struct UIEdgeInsets {
CGFloattop, left, bottom, right;// specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;
第二個(gè)參數(shù)也是個(gè)結(jié)構(gòu)體
typedefNS_ENUM(NSInteger, UIImageResizingMode) {
UIImageResizingModeTile,
UIImageResizingModeStretch,
};
第一個(gè)是平鋪的意思郎逃,第二個(gè)是拉伸,本人更傾向用平鋪
那么直接上代碼跟圖片了
UIImageView*img = [[UIImageViewalloc]initWithFrame:CGRectMake(10,100,350,200)];
img.image= [UIImageimageNamed:@"chat-1@2x.png"];
[self.viewaddSubview:img];
UIImageView*strechImg =[[UIImageViewalloc]initWithFrame:CGRectMake(10,430,350,200)];
strechImg.image= [UIImageimageNamed:@"chat-1@2x.png"];
strechImg.image= [strechImg.imageresizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)resizingMode:UIImageResizingModeTile];
[self.viewaddSubview:strechImg];
看到的效果就是圖一的效果
從圖一中可以看出挺份,未被保護(hù)區(qū)域褒翰,已經(jīng)出現(xiàn)鋸齒以及粗化了
那未被拉伸的部分是哪里呢,請(qǐng)看圖二匀泊,就是圖二中箭頭所指向的區(qū)域了优训,那么童鞋們是不是看出了那個(gè)UIEdgeInsets該怎么設(shè)置了呢