copy from CPLASF_lixj  http://blog.csdn.net/qijianli/article/details/8152726

项目中经常会遇到Button上同时显示图片和文字,且图片和文字上下排列,同事用到的方法是在UIButton上添加一个UIImageView和UILable控件,这样做代码比较繁琐,然后我就试着扩展了UIButton,代码如下:

在.h文件中:

@interface UIButton (UIButtonImageWithLable)

- (void) setImage:(UIImage *)image withTitle:(NSString *)title forState:(UIControlState)stateType;

@end

在.m文件中:

- (void) setImage:(UIImage *)image withTitle:(NSString *)title forState:(UIControlState)stateType {

//UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)

CGSize titleSize = [title sizeWithFont:HELVETICANEUEMEDIUM_FONT(12.0f)];

[self.imageView setContentMode:UIViewContentModeCenter];

[self setImageEdgeInsets:UIEdgeInsetsMake(-8.0,

0.0,

0.0,

-titleSize.width)];

[self setImage:image forState:stateType];

[self.titleLabel setContentMode:UIViewContentModeCenter];

[self.titleLabel setBackgroundColor:[UIColor clearColor]];

[self.titleLabel setFont:HELVETICANEUEMEDIUM_FONT(12.0f)];

[self.titleLabel setTextColor:COLOR_ffffff];

[self setTitleEdgeInsets:UIEdgeInsetsMake(30.0,

-image.size.width,

0.0,

0.0)];

[self setTitle:title forState:stateType];

}

备注:如果不需要上下显示,只需要横向排列的时候,就不需要设置左右偏移量了,代码如下

- (void) setImage:(UIImage *)image withTitle:(NSString *)title forState:(UIControlState)stateType {

//UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)

CGSize titleSize = [title sizeWithFont:HELVETICANEUEMEDIUM_FONT(12.0f)];

[self.imageView setContentMode:UIViewContentModeCenter];

[self setImageEdgeInsets:UIEdgeInsetsMake(-8.0,

0.0,

0.0,

0.0)];

[self setImage:image forState:stateType];

[self.titleLabel setContentMode:UIViewContentModeCenter];

[self.titleLabel setBackgroundColor:[UIColor clearColor]];

[self.titleLabel setFont:HELVETICANEUEMEDIUM_FONT(12.0f)];

[self.titleLabel setTextColor:COLOR_ffffff];

[self setTitleEdgeInsets:UIEdgeInsetsMake(30.0,

0.0,

0.0,

0.0)];

[self setTitle:title forState:stateType];

}

UIButton上同时显示图片和文字的方法的更多相关文章

  1. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  2. UIButton和UINavigationItem设置图片和文字位置

    1.UIButton设置文字位置 有些时候我们想让UIButton的title居左对齐,我们设置 btn.textLabel.textAlignment = UITextAlignmentLeft 是 ...

  3. Android TextView里直接显示图片的三种方法

    方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般假设字体是在图片上重叠的推荐这样写.时间关系,这个不付源代码了. 方法二:利用Tex ...

  4. php图片添加文字水印方法汇总

    方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a. ...

  5. php给图片添加文字水印方法汇总

    在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 ...

  6. python 读取并显示图片的两种方法

    在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...

  7. python实现读取并显示图片的两种方法

    https://www.cnblogs.com/lantingg/p/9259840.html 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片. ...

  8. 安卓开发分享功能,分享到facebook网页上不显示图片的问题

    最近公司要上分享功能,分享的地方包括微信,qq,facebook,功能完成后,发现分享到facebook的内容只有文字可以显示,图片不显示,其中图片存储是使用七牛的服务器:而分享到微信和qq都可以正常 ...

  9. 树莓派使用 OLED 屏显示图片及文字

    树莓派默认是不带显示屏的,如果想要查看系统的一些信息,需要使用电脑登录到树莓派,或者通过 HDMI 连接外接显示器查看.这样做总是有点麻烦,我们可以通过外接一个 OLED 屏来显示一些关键参数或者图片 ...

随机推荐

  1. C# 课堂总结3-语句

    一.顺序语句 二.条件,分支语句 1.if语句 关键是能够熟练运用 if的嵌套.要考虑好所有的情况. 如果说 条件是两种+情况相互对应的,那么就可以只用 if 与else .但必须要想好 每个else ...

  2. No orientation specified, and the default is

    链接地址:http://jingyan.baidu.com/article/a24b33cd7722dc19fe002bd0.html No orientation specified, and th ...

  3. UVa 10806 Dijkstra,Dijkstra(最小费用最大流)

    裸的费用流.往返就相当于从起点走两条路到终点. 按题意建图,将距离设为费用,流量设为1.然后增加2个点,一个连向节点1,流量=2,费用=0;结点n连一条同样的弧,然后求解最小费用最大流.当且仅当最大流 ...

  4. ASP.NET MVC 中的 T4

    每次使用“添加视图”或“添加控制器”功能时,您都在 ASP.NET MVC 项目中使用 T4 模板.这些模板位于 Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\ ...

  5. git切换远程

    已经开发一段时日,公司突然提出要换git仓库 查看目前所有的分支 $git branch -va 添加新的远程仓库 $ git remot add [name] [url] 查看下目前配置 $ git ...

  6. php基础知识(很简单一套适合零基础的朋友学习)

    红色的一般都是重点,还有自己的一些废话 运算符 算术运算符: 基本运算(除数不能为0) 比较运算符: 大小比较(类型比较), 如果两个类型不一样,系统会自动转换成统一类型 赋值运算符: 基本赋值和运算 ...

  7. bzoj 1047 : [HAOI2007]理想的正方形 单调队列dp

    题目链接 1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2369  Solved: 1266[Submi ...

  8. Java GUI图形界面开发工具

    Applet 应用程序     一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...

  9. Sicily-1028

    一.        题意: 算出汉诺塔移动序列中对应位置的号码,数据规模很大,所以不能单纯递归,而是要找出汉诺塔序列的规律. 二.        汉诺塔数列 为了得出最少的移动步数,当n为偶数时,最上 ...

  10. TCP传输连接建立与释放详解

    一直以来有许多读者朋友对TCP的传输连接建立和释放过程不是很理解,而这又是几乎网络认证中必考的知识点,包括软考.CCNA\CCNP.H3CNA\H3CNE等,为此再把笔者年度巨作,广受好评的——< ...