iPhone图片拉伸的几种方法

iPhone图片拉伸的几种方法

UIImageResizingModeTile和 UIImageResizingModeStretch两种模式,从名字就可以看出,是平铺模式和拉伸模式。平铺就是复制你Insets指定的矩形区域块来填充你所指定的图片区域,而拉伸就是通过拉伸你Insets指定的矩形区域块来填充你 所需的图片区域。

系统至ios6之后,关于图片拉伸的方法已经扩展至3个函数:

1.ios4提供的方法:

  1. - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
  2. 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是不拉伸区域距离左边框的宽度,第二个参数是不拉伸区域距离上边框的宽度,其操作本质是对一个像素的复制拉伸,故没有渐变效果,这也是其缺点所在。
  3. 参数的意义是,如果参数指定10,5。那么,图片左边10个点,上边5个点。不会被拉伸,x坐标为11的点会被横向复制,y坐标为6的点会被纵向复制。注意:只是对一个点像素进行复制到指定的宽度。

参考: http://www.linuxidc.com/Linux/2013-02/80113p2.htm

2.ios5提供的方法

  1. - (UIImage *)resizableImageCapInsets:(UIEdgeInsets)Insets
  2. 其中Insets这个参数的格式是(top,left,bottom,right),从上、左、下、右分别在图片上画了一道线,这样就给一个图片指定了一个矩形区域。只有在框里面的部分才会被拉伸,而框外面的部分则保持改变。比如(20,5,10,5),意思是下图矩形里面的部分可以被拉伸,而其余部分不变。

3.ios6提供的方法:

  1. - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode                                            关于Insets参数,与ios5是相同的,不同的是其后增加了一个拉伸的模式,ios6.0的版本提供了UIImageResizingModeTile和 UIImageResizingModeStretch两种模式,从名字就可以看出,是平铺模式和拉伸模式。平铺就是复制你Insets指定的矩形区域块来填充你所指定的图片区域,而拉伸就是通过拉伸你Insets指定的矩形区域块来填充你 所需的图片区域。我想,相较4.0的进步你也看出来了,是明显的吧,相较于以前的,图片的resize由一个点变成了一个矩形块,这样你的所指定块的渐变效果,也是可以呈现出来的。
  2. 只是,如果你需要兼容4.0的机器的话,那么还是需用老的函数来完成对图片的resize操作的。
时间: 2024-08-05 11:11:01

iPhone图片拉伸的几种方法的相关文章

iOS图片拉伸的几种方法

系统至ios6之后,关于图片拉伸的方法已经扩展至3个函数: 1.ios4提供的方法: - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight 这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是不拉伸区域距离左边框的宽度,第二个参数是不拉伸区域距离上边框的宽度,其操作本质是对一个像

iOS图片拉伸的三种方法

方法一: iOS中有个叫端盖(end cap)的概念,用来指定图片中的哪一部分不用拉伸,上下左右不需要被拉伸的边缘就称为端盖. 1 // use resizableImageWithCapInsets: and capInsets. 3 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED; 4 @pr

在移动设备上放大图片查看图片细节的俩种方法

类似淘宝京东上的产品图,我们可以放大来看产品的具体细节.那么,在移动设备上,基于Web浏览器的这种效果又是如何实现的呢? 一.使用touchEvent来实现,关于touchEvent的一些基本知识,可以阅读文章--多点触摸网络开发 1.页面代码 <div id="warpper" class="warpper"> <div class="clearfix"></div> <div id="con

加载图片时的2种方法

1,仅加载图片,图像数据不会缓存. NSString *path = [[NSBundle mainBundle] pathForResource:@”icon” ofType:@”png”]; UIImage *image = [UIImage imageWithContentsOfFile:path]; 或 NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:“png”]; NSData *i

iPhone图片拉伸:resizableImageWithCapInsets

今天做了一个温度计的应用,需要一个图,能够根据输入的数据将温度计里面的红色图片拉伸.为了达到这个效果,使用了iOS5的函数:resizableImageCapInsets:(UIEdgeInsets)Insets. 最近终于申请到苹果开发者账号!搞的好烦啊!给大家带福利了! 想真机调试,上架应用,将IPA打包给朋友用,或者申请开发者账号的请联系我! 我的QQ号:593325657 真机调试有99个限制的,想要的话尽快联系! 其中Insets这个参数的格式是(top,left,bottom,rig

c# pictureBox1.Image的获得图片路径的三种方法 winform

代码如下:c# pictureBox1.Image的获得图片路径的三种方法 winform 1.绝对路径:this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径:Application.StartupPath; 可以得到程序根目录 string picPath=Application.StartupPath+"\\1.gif"; 3.获得网络图片的路径 this.pictureBox2.Image=

图片拉伸的几种方式

前言 - 之前虽然会图片拉伸,但是IOS中有好几种方法可以图片拉伸.以前没有时间整理,今天准备把目前我所知道的几种方法整理出来,重点介绍非代码的方式. 方法  1. IOS5之前 这个方法,你只要填写左边和上边的长度,然后右边和下面的长度会用总长度减一,方法会自动用中间的那一个点来拉伸. - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeigh

iOS UIimage的拉伸的三种方法

第一种方法 // - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __TVOS_PROHIBITED; //leftCapWidth:左边不拉伸区域 //topCapHeight:上面不拉伸区域 UIImage *image =[UIImageimageNamed:@"chatdetail_info_other"]; UI

批量改变文件夹和子文件夹中图片格式的两种方法

生活中,我们通常会遇到这种问题:一个文件夹内部有多个子文件夹,每个文件夹内部有很多图片,我们想改变这些图片的格式. 例如.png格式图片支持背景透明,但我们想把它变成背景不透明的.jpg图片.又比如.bmp格式是非压缩图片,我们想把它转换为无损压缩的.png图片以节省存储空间. 如果图片数量很少,很明显我们可以通过Windows自带的画图工具或者其他看图软件通过“另存为”一张张地转换图片格式.但是如果图片很多,怎么办? 这个问题其实有两个关键点: ① 要求批量处理. ② 文件夹中还有子文件夹.