做过IM的童鞋都知道气泡聊天,那么怎么实现气泡随着内容的长短变化而做到不拉伸呢,很简单,苹果为我们提供了API,可以让我们一步到位
resizableImageWithCapInsets:<#(UIEdgeInsets)#> resizingMode:<#(UIImageResizingMode)#>
其中UIEdgeInsets表示是你不想被拉伸的距离,UIEdgeInsets在苹果定义里是个结构体,里面的参数分别表示(上,左,下,右)
typedef struct UIEdgeInsets {
CGFloattop, left, bottom, right;// specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;
第二个参数也是个结构体
typedefNS_ENUM(NSInteger, UIImageResizingMode) {
UIImageResizingModeTile,
UIImageResizingModeStretch,
};
第一个是平铺的意思,第二个是拉伸,本人更倾向用平铺
那么直接上代码跟图片了
UIImageView*img = [[UIImageViewalloc]initWithFrame:CGRectMake(10,100,350,200)];
img.image= [UIImageimageNamed:@"[email protected]"];
[self.viewaddSubview:img];
UIImageView*strechImg =[[UIImageViewalloc]initWithFrame:CGRectMake(10,430,350,200)];
strechImg.image= [UIImageimageNamed:@"[email protected]"];
strechImg.image= [strechImg.imageresizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)resizingMode:UIImageResizingModeTile];
[self.viewaddSubview:strechImg];
看到的效果就是图一的效果
从图一中可以看出,未被保护区域,已经出现锯齿以及粗化了
那未被拉伸的部分是哪里呢,请看图二,就是图二中箭头所指向的区域了,那么童鞋们是不是看出了那个UIEdgeInsets该怎么设置了呢