博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios UIImage图片拉伸 resizableImageWithCapInsets:
阅读量:5864 次
发布时间:2019-06-19

本文共 1369 字,大约阅读时间需要 4 分钟。

常见的按钮添加和背景设置如下:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(80, 130, 160, 44)];

[button setTitle:@”Test Button” forState:UIControlStateNormal];

// Image with without cap insets

UIImage *buttonImage = [UIImage imageNamed:@”blueButton”];

[button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];

[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[[self view] addSubview:button];
[/crayon]

所得到的按钮会相当悲剧…

iOS5中提供了一个新的UIImage方法,,可以将图片转换为以某一偏移值为偏移的可伸缩图像(偏移值内的图像将不被拉伸或压缩)。

用法引述如下:

resizableImageWithCapInsets:

Creates and returns a new image object with the specified cap insets.
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)
capInsets
Parameters
capInsets
The values to use for the cap insets. 

typedef struct {

CGFloat top, left, bottom, right;
} UIEdgeInsets; 分别表示上左下右四个方向的偏移量。于是把上面按钮的UIImage改为如下形式:
UIImage *buttonImage = [[UIImage imageNamed:@”blueButton”]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 16, 0, 16)];
可以得到如下按钮:

问题得到解决。

但是值得注意的是该方法需要至少iOS5的运行环境,因此对于需要开发支持iOS5之前的App来说是不可行的。替代方案是,但是在iOS5中,这已经是被Deprecated的方法了,而且该方法只能以1px作为重复铺满拉伸区域,无法做到类似渐变等图片效果,是存在一定局限的。

 

 

简单的说

UIImage *backButton = [[UIImage imageNamed:@”blueButton”]

resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12)];

让图片在UIEdgeInsetsMake(12, 12, 12, 12)这个范围内拉伸,距离图片top的12像素处,buttom的12像素处内拉伸,其他区域不拉伸。

转载地址:http://naunx.baihongyu.com/

你可能感兴趣的文章
Exchange Server 2016 独立部署/共存部署 (七)—— DAG功能测试
查看>>
Linq==数据访问层?
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)...
查看>>
Duplicate Symbol链接错误的原因总结和解决方法[转]
查看>>
适配器模式
查看>>
刨根问底区块链 —— 基础篇
查看>>
php 直接调用svn命令
查看>>
建立低权限的ftp帐号
查看>>
htpasswd
查看>>
Android窗口机制(三)Window和WindowManager的创建与Activity
查看>>
Android 编译出错解决
查看>>
iOS--The request was denied by service delegate (SBMainWorkspace) for reason:
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
Spring boot 入门篇
查看>>
【IOS开发】GDataXML解析XML
查看>>
Iptables
查看>>
我的友情链接
查看>>
GridView多行多列合并单元格(指定列合并)
查看>>