iOS开发中拉伸图片的几种方式
2016-03-22 00:44
381 查看
在iOS开发中,经常会遇到控件尺寸和图片大小不匹配的情况. 一些情况下, 我们需要对图片进行拉伸, 以满足美观需求.
总的来说, 图片的拉伸方式可以分为两种, 一种是通过Xcode自带的Show Slicing功能, 一种是通过代码进行拉伸.
首先, 介绍Xcode自带的Show Slicing 功能.
1. 如下图所示的图片, 如果不进行拉伸, 直接设置给一个长度比较长的button以后,其运行效果如图所示.
2. 用Show Slicing 进行拉伸.
1)选中Assets中的图片,右下角有一个Show Slicing ,如图所示.
2)点击Show Slicing 以后, 会显示如下界面, 点击图中的Start Slicing
3)拖动虚线,调整拉伸区域, 虚线内的白色区域会被拉伸, 注意要保留住四周的圆角,选择好拉伸区域以后, 点击右下角的Show Overview,就会保存拉伸后的效果了.
4)这个时候,在给button设置这张背景图片,运行效果如图,这样就比原先美观多了.
5)当给UIImageView设置尺寸大小不匹配的背景图片时,还可以通过Stretching 功能,当设置了Image以后, 在Stretching的四个参数中,填入0-1的数值, 调整拉伸效果.
3. 用代码进行拉伸
1)第一种拉伸方法
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth
topCapHeight:(NSInteger)topCapHeight
__TVOS_PROHIBITED;
使用示例:
UIImage *image = [UIImage
imageNamed:@"RedButton"];
image = [image stretchableImageWithLeftCapWidth:image.size.width *
0.5 topCapHeight:image.size.height *
0.5];
[self.loginButton
setBackgroundImage:image forState:UIControlStateNormal];
使用效果:
2)第二种拉伸方法
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
NS_AVAILABLE_IOS(5_0);
// create a resizable version of this image. the interior is tiled when drawn.
使用示例:
UIImage *image = [UIImage
imageNamed:@"RedButton"];
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height *
0.5, image.size.width *
0.5, image.size.height *
0.5, image.size.width *
0.5)];
[self.loginButton
setBackgroundImage:image forState:UIControlStateNormal];
使用效果:
4.在我们经常使用的微信, QQ中,聊天内容会有一个类似于气泡的背景图,如图所示
有的时候,一次回复了几百个字, 这个图片就会根据内容的多少进行拉伸,要实现这种效果就可以使用代码拉伸的方式.
总的来说, 图片的拉伸方式可以分为两种, 一种是通过Xcode自带的Show Slicing功能, 一种是通过代码进行拉伸.
首先, 介绍Xcode自带的Show Slicing 功能.
1. 如下图所示的图片, 如果不进行拉伸, 直接设置给一个长度比较长的button以后,其运行效果如图所示.
2. 用Show Slicing 进行拉伸.
1)选中Assets中的图片,右下角有一个Show Slicing ,如图所示.
2)点击Show Slicing 以后, 会显示如下界面, 点击图中的Start Slicing
3)拖动虚线,调整拉伸区域, 虚线内的白色区域会被拉伸, 注意要保留住四周的圆角,选择好拉伸区域以后, 点击右下角的Show Overview,就会保存拉伸后的效果了.
4)这个时候,在给button设置这张背景图片,运行效果如图,这样就比原先美观多了.
5)当给UIImageView设置尺寸大小不匹配的背景图片时,还可以通过Stretching 功能,当设置了Image以后, 在Stretching的四个参数中,填入0-1的数值, 调整拉伸效果.
3. 用代码进行拉伸
1)第一种拉伸方法
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth
topCapHeight:(NSInteger)topCapHeight
__TVOS_PROHIBITED;
使用示例:
UIImage *image = [UIImage
imageNamed:@"RedButton"];
image = [image stretchableImageWithLeftCapWidth:image.size.width *
0.5 topCapHeight:image.size.height *
0.5];
[self.loginButton
setBackgroundImage:image forState:UIControlStateNormal];
使用效果:
2)第二种拉伸方法
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
NS_AVAILABLE_IOS(5_0);
// create a resizable version of this image. the interior is tiled when drawn.
使用示例:
UIImage *image = [UIImage
imageNamed:@"RedButton"];
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height *
0.5, image.size.width *
0.5, image.size.height *
0.5, image.size.width *
0.5)];
[self.loginButton
setBackgroundImage:image forState:UIControlStateNormal];
使用效果:
4.在我们经常使用的微信, QQ中,聊天内容会有一个类似于气泡的背景图,如图所示
有的时候,一次回复了几百个字, 这个图片就会根据内容的多少进行拉伸,要实现这种效果就可以使用代码拉伸的方式.
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 利用jQuery和CSS将背景图片拉伸
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事