微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS聊天起泡(背景图片被拉伸不变形)----转载--待验证

方法

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸图片,需要两个参数

@param leftCapWidth: 左边不拉伸区域的宽度,
@param topCapHeight: 上面不拉伸的高度。

根据设置的宽度和高度,将接下来的一个像素进行左右扩展和上下拉伸。

注意:可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。

注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。

方法

在iOS6.0中,UIImage又提供了一个方法处理图片拉伸(适用区域拉伸),如下 :

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingModeNS_AVAILABLE_IOS(6_0);// the interior is resized according to the resizingMode

UIImageResizingMode参数,用来指定拉伸的模式:

UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片

代码如下:

UIImageView *m_imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0, 240,110)];
//[m_imageView setimage:[[UIImage imageNamed:@"2.png"] stretchableImageWithLeftCapWidth:40 topCapHeight:10]];
[m_imageView setimage:[[UIImageimageNamed:@"1.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(30,30, 30,30)]];
[m_imageView setimage:[[UIImageimageNamed:@"1.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(30,30, 30,30) resizingMode:UIImageResizingModeStretch]];
[self.view addSubview:m_imageView];

智能推荐:

 

resizeWithImage来使得聊天气泡图片边缘不拉伸

- (UIImage *)resizeWithImage:(UIImage *)image{
    CGFloat top = image.size.height/2.0;
    CGFloat left = image.size.width/2.0;
    CGFloat bottom = image.size.height/2.0;
    CGFloat right = image.size.width/2.0;
    return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)resizingMode:UIImageResizingModeStretch];
}
  • UIImageResizingModeStrech:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
  • UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片

resizableImageWithCapInsets有四个值上下左右

 

上下左右的值定义了受保护区域,能被拉伸的地方是中间区域,一般我们都设成中心点为了安全。

参考文章https://www.jianshu.com/p/7200a2b7b25a

   
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐