如何拉伸有透明区域的png图片来做UIButton的背景图片
2015-08-29 20:47
791 查看
1.使用boundingRect来动态计算文本的尺寸
- (CGRect)boundingRectWithSize:(CGSize)size
options:(NSStringDrawingOptions)options attributes:(NSDictionary*)attributes
context:(NSStringDrawingContext*)context
NS_AVAILABLE_IOS(7_0);
//比如文本如下,通过计算得到的尺寸是120*120
//那么可以设置btn.frame = {0,0,120,120};
//设置背景图片(四周有透明区域的png图片)
//这样文字就会处于背景图片之外.为了解决这个问题,我们首先要做的就是,把btn的上下左右各加20.这样背景图片会自动拉伸.变成{0,0,160,160};
//这个时候,就会变成下面的样子,由于文字会自动从左侧开始绘制,到一行的结尾.在自动换行.
//为了解决这个问题,需要使用到btn的另外一个属性
@property(nonatomic) UIEdgeInsets
contentEdgeInsets
UI_APPEARANCE_SELECTOR;// default is UIEdgeInsetsZero
btn.contentEdgeInsets=
UIEdgeInsetsMake(20,20,20,20);
//这样文本在按钮btn中显示会距离btn的frame四周有20的间距
//这样文字就能正常的显示在背景图片之中了.
//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊
//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊
//解决方法,利用UIImage的对象方法将对图片进行指定范围的拉伸
- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);//
create a resizable version of this image. the interior is tiled when drawn.
- (UIImage*)resizableImage:(NSString*)name
{
UIImage
*normal = [UIImageimageNamed:name];
CGFloat
w = normal.size.width*
0.5;
CGFloat
h = normal.size.height*
0.5;
return
[normal resizableImageWithCapInsets:U
4000
IEdgeInsetsMake(h, w,
h, w)];
}
//开始图片原始大小为60*60 ->将拉伸到160*160
//1.垂直方向上拉伸(保护顶部一半不拉伸, 底部一半不拉伸.)
//变成了(60 * 160)
—>
->
//2.水平方向上拉伸(保护左边一半不拉伸,保护右边一半不拉伸)
//变成了(160 * 160 )
->
>
- (CGRect)boundingRectWithSize:(CGSize)size
options:(NSStringDrawingOptions)options attributes:(NSDictionary*)attributes
context:(NSStringDrawingContext*)context
NS_AVAILABLE_IOS(7_0);
//比如文本如下,通过计算得到的尺寸是120*120
//那么可以设置btn.frame = {0,0,120,120};
//设置背景图片(四周有透明区域的png图片)
//这样文字就会处于背景图片之外.为了解决这个问题,我们首先要做的就是,把btn的上下左右各加20.这样背景图片会自动拉伸.变成{0,0,160,160};
//这个时候,就会变成下面的样子,由于文字会自动从左侧开始绘制,到一行的结尾.在自动换行.
//为了解决这个问题,需要使用到btn的另外一个属性
@property(nonatomic) UIEdgeInsets
contentEdgeInsets
UI_APPEARANCE_SELECTOR;// default is UIEdgeInsetsZero
btn.contentEdgeInsets=
UIEdgeInsetsMake(20,20,20,20);
//这样文本在按钮btn中显示会距离btn的frame四周有20的间距
//这样文字就能正常的显示在背景图片之中了.
//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊
//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊
//解决方法,利用UIImage的对象方法将对图片进行指定范围的拉伸
- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);//
create a resizable version of this image. the interior is tiled when drawn.
- (UIImage*)resizableImage:(NSString*)name
{
UIImage
*normal = [UIImageimageNamed:name];
CGFloat
w = normal.size.width*
0.5;
CGFloat
h = normal.size.height*
0.5;
return
[normal resizableImageWithCapInsets:U
4000
IEdgeInsetsMake(h, w,
h, w)];
}
//开始图片原始大小为60*60 ->将拉伸到160*160
//1.垂直方向上拉伸(保护顶部一半不拉伸, 底部一半不拉伸.)
//变成了(60 * 160)
—>
->
//2.水平方向上拉伸(保护左边一半不拉伸,保护右边一半不拉伸)
//变成了(160 * 160 )
->
>
相关文章推荐
- iOS开发之路--微博“更多”页面
- iOS开发之路--微博骨架搭建
- IOS开发代码分享之获取启动画面图片的string
- IOS开发之路--C语言数组和字符串
- IOS开发代码分享之用nstimer实现倒计时功能
- IOS开发代码分享之设置UISearchBar的背景颜色
- ios开发之环境搭建-01
- 在开发iOS程序时对日期处理的总结
- iOS开发——keychain的使用
- iOS Graphics Technologies iOS 图形技术
- iOS开发异常错误总结
- 学习Objective-C:入门手册
- iOS开发 简单实现视频音频的边下边播
- iOS开发 — Quartz 2D知识点应用 (制作了一个Demo,源代码)
- ios开发对配置文件plist的操作
- iphone5和4的屏幕兼容问题
- 9秒的课程只为培养靠谱的IOS和HTML5开发人才而定制
- iOS开发学习笔记 1-0 开篇
- iOS开发学习笔记 2-1 C语言部分 初识C语言
- iOS开发学习笔记 2-2 C语言部分 类型、运算符与表达式