文档章节

UIImage图片拉伸问题

 动态灵犀
发布于 2015/10/26 21:53
字数 339
阅读 1279
收藏 0
- (UIImage *)stretchableImageWithLeft
CapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

这个函数是UIImage的一个实例函数,它的功能是创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。

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

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

参数的意义是,如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6的一个像素会被纵向复制。注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。


UIButton *btnLogin = [UIButton buttonWithType:UIButtonTypeSystem];
btnLogin.frame =  CGRectMake(60, [[UIScreen mainScreen] bounds].size.height -100, 100, 50);
[btnLogin.layer setCornerRadius:20];
UIImage *imgLogin = [UIImage imageNamed:@"LoginGreenBigBtn"];
imgLogin = [imgLogin stretchableImageWithLeftCapWidth:floorf(imgLogin.size.width/2) topCapHeight:floorf(imgLogin.size.height/2)];
[btnLogin setBackgroundImage:imgLogin forState:UIControlStateNormal];
[btnLogin setTitle:@"登录" forState:UIControlStateNormal];
[btnLogin setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btnLogin addTarget:self action:@selector(Login) forControlEvents:UIControlEventTouchUpInside];
[ImageView addSubview:btnLogin];

原来是这样的:    

图片是这样的:

设置后,图片显示是这样的:


© 著作权归作者所有

粉丝 0
博文 13
码字总数 2299
作品 0
深圳
私信 提问
iOS图片拉伸技巧

纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能、极强的用户体验、华丽简洁的外观。华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂...

长平狐
2013/03/28
1K
0
iPhone 图片拉伸不变形的方法

如果一个椭圆图片,原图大小为3030,而我们让它显示10030,那么这个图片就会被拉伸,而且效果很难看。用下边的方法可以创建一个局部不被拉伸的图片。 UIImage * buttonBg = [[UIImage image...

vane_
2013/08/08
1K
1
iOS图片拉伸三种方式

图片拉伸 1.第一种图形界面 第一步第二步 第三步 图形设置只需要点点就行,至于拉伸大小,系统已替你算好 2.代码方式 第一种 第二种 3.github地址 github

AppleDream
2016/06/05
37
0
xcode遇见很奇怪的语法错误

请问这个错误要怎么处理啊 附上源代码: #import @interface UIImage (DZ) /** * 加载最原始的图片,没有经过渲染 * */ +(instancetype)imageWithRenderingOriginalName:(NSString *)imageName...

Chars-D
2015/11/28
411
2
iOS图片拉伸之神属性:resizableImageWithCapInsets

在仿写QQ会话窗口的时候,气泡的背景图片拉伸问题。并不是所有地方都可以拉伸的,所以定义了下面的工具类中的一个方法,专门拉伸图片。 显示样式: P.S. resizableImageWithCapInsets有四个值...

壹峰
02/19
6
0

没有更多内容

加载失败,请刷新页面

加载更多

正则表达式匹配

请实现一个函数用来匹配包括 '.' 和 '*' 的正则表达式。模式中的字符 '.' 表示任意一个字符,而 '*' 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配...

Garphy
今天
7
0
Laravel 5.1的多路由文件的配置

默认的路由配置文件只有一个, \app\Http\routes.php。 在同一个文件中写路由容易起冲突,文件会越来越大,就需要定义多个路由文件。 找到加载\app\Http\routes.php的文件, 打开\app\Provid...

mdoo
今天
5
0
Hibernate 5 开始使用指南前言

同时在面向对象软件和关系型数据库进行工作,可能会非常复杂和费时。数据在对象和数据库之间可能会不一致,然后导致开发成本会非常高。 Hibernate 是一个针对 Java 环境的对象关系映射(Obj...

honeymoose
今天
6
0
聊聊nacos ServiceManager的UpdatedServiceProcessor

序 本文主要研究一下nacos ServiceManager的UpdatedServiceProcessor ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Compone......

go4it
今天
7
0
正则表达式的使用(QQ格式的判断与空格的切割)

//正则表达式的使用 public static void main(String[] args) throws IOException, ClassNotFoundException { //test1("123456"); test2("-1 99 kk"); } /** * ......

zhengzhixiang
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部