UIButton的imageEdgeInsets 和 titleEdgeInsets
我们知道,在UIButton中有一个UILabel和一个UIImageView,同时还有属性: titleEdgeInsets,imageEdgeInsets。介绍下 imageEdgeInsets 和 titleEdgeInsets 的用法。
UIEdgeInsets
首先,titleEdgeInsets 和 imageEdgeInsets 都是 UIEdgeInsets类型。UIEdgeInsets 是一个结构体,定义如下:
typedef struct UIEdgeInsets {
CGFloat top, left, bottom, right;
} UIEdgeInsets;
四个值依次是:上、左、下、右,代表的是距离上边界、左边界、下边界、右边界的位移,默认都是0。
示例
首先创建一个button,button有image和title,代码如下:
UIButton *searchBtn = [[UIButton alloc] initWithFrame:CGRectMake(,,,)];
searchBtn.backgroundColor = [UIColor yellowColor];
[self.view addSubview:searchBtn];
UIImage *searchImage = [UIImage imageNamed:@"search"];
[searchBtn setImage:searchImage forState:UIControlStateNormal];
[searchBtn setTitle:@"测试" forState:UIControlStateNormal];
[searchBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
此时,button的形状是默认的,如下:
设置一下button 的 imageEdgeInsets:
[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(, , , )];
含义是:image距离上侧的边距增加20,也就是image向下偏移20,此时button的形状如下:
[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(, -, , )];
含义:image距左侧的边距减少20,也就是image向左偏移20,此时button的形状如下:
[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(, , , -)];
含义:image距右侧的距离减少20,也就是image向右偏移20,此时button的形状如下:
[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(,,,)];
含义:距离下侧的距离增加20,也就是image向上偏移20,此时button的形状如下:
至此,UIButton 的 imageEdgeInsets 里面的四个参数代表的含义已经非常清楚了,同理,titleEdgeInsets的四个参数代表的含义也是一样的。
文字和图片位置互换
理解了 imageEdgeInsets 和 titleEdgeInsets,现在实现将文字和图片位置互换。
第一步:把image移到右面,相当于上侧和下侧不变,左侧增加一段距离,右侧减少一段距离;
第二步:把title移到左面,相当于上侧和下侧不变,左侧减少一段距离,右侧增加一段距离;
首先算出图片和文字的宽度:
CGFloat imageWidth = searchImage.size.width;
[searchBtn.titleLabel sizeToFit];
CGFloat titleWidth = searchBtn.titleLabel.frame.size.width;
把image 移到右面:
[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(,titleWidth,,-titleWidth)];
把title 移到左面:
[searchBtn setTitleEdgeInsets:UIEdgeInsetsMake(,-imageWidth,,imageWidth)];
最后的效果图:
UIButton的imageEdgeInsets 和 titleEdgeInsets的更多相关文章
- UIButton 使用imageEdgeInsets和titleEdgeInsets属性
现在App的底部栏.侧边栏.顶部栏经常出现一些包含图像和文字的Item,以前用按钮上面添加label和imageView, 想想实在是对资源的浪费.. 图1 — 底部 ...
- UIButton的titleEdgeInsets和imageEdgeInsets属性
转:http://www.cnblogs.com/huichun/p/3419596.html uiButton控件上自带了一个uiLabel类型的子控件和一个uiImageView类型的子控件,如果 ...
- iOS小知识:使UIButton中的图片和文字实现左对齐
UIButton setImage 和 setTitle之后,默认的 image和title 对齐方式是居中, 由于 title 长度不固定,所以如果要几个这样有image有title的按钮纵向排列对 ...
- MEMO:UIButton 中的图片和标题 左对齐
UIButton setImage 和 setTitle之后.默认 image和title 对齐居中, 因为 title 长度不固定. 所以假设要几个这样有image有title的button纵向排列 ...
- UIButton中的**EdgeInsets是做什么用的?
UIButton中的**EdgeInsets是做什么用的? UIEdgeInsetsMake Creates an edge inset for a button or view.An inset i ...
- UIButton中的三个UIEdgeInsets属性
接着昨天的 UIButton中的三个UIEdgeInsets属性 ,今天我们具体谈谈UIButton的contentEdgeInsets.titleEdgeInsets.imageEdgeInsets ...
- iOS-UI-UI控件概述
以下列举一些在开发中可能用得上的UI控件: IBAction和IBOutlet,UIView 1 @interface ViewController : UIViewController 2 3 @p ...
- 解决TalbleView头部或底部子控件不显示问题
在自定义cell头部控件UITableViewHeaderFooterView(和自定义cell的方法几乎一样)时,出现了头部控件子控件不显示的问题. 注意和自定义cell的区别. .h文件 #imp ...
- Objective-c——UI基础开发第九天(QQ好友列表)
一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...
随机推荐
- erl0002-erlang ets学习笔记
ets全称“erlang term storage” erlang项式存储. ets打破了erlang“不变数据”的原则,使得进程之间可以共享数据.首先引起的思考是为什么会出现ets?下面是对网络资料 ...
- (转)TCP协议那些事
(上) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是 ...
- Github 终于开始认真考虑开源项目许可证了
如今GitHub已成为全球最流行的开源项目托管平台,但也有质疑声音——“Github中的大多数项目并不算是开源项目”.这是因为Github中大多数项目并没有明确声明所使用的许可证. 根据版权法规定,如 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ThinkAndroid是简洁,快速的进行Android应用程序的框架
ThinkAndroid简介ThinkAndroid是一个免费的开源的.简易的.遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单.快速的进行Android应用程序的开发,包含A ...
- Dapper.net 在Parameterized时对于String的扩展(转)
虽然Dapper通过提供的DbString本身支持对于String的指定Parameterized,但这方法明显不够,当Insert时,我们更希望是把一个Poco直接传递过去,而不是来new一个匿名函 ...
- Delphi richedit获取选中文字
function TForm1.GetSendText(RichEdit: TExRichEdit): string;var MsgListInfo: TStrings; i, m, n: i ...
- POJ 3744 Scout YYF I (概率dp+矩阵快速幂)
题意: 一条路上,给出n地雷的位置,人起始位置在1,向前走一步的概率p,走两步的概率1-p,踩到地雷就死了,求安全通过这条路的概率. 分析: 如果不考虑地雷的情况,dp[i],表示到达i位置的概率,d ...
- Ubuntu下命令行cd进不了/home/用户目录
输入命令:cd /home/usr后和刚刚进入终端一样,其实已经进入了usr中,终端默认用usr用户登录,输入ls就可以查看usr目录下的文件
- 导入CSV文件之后出现换行符问题
在用sqlldr导入数据之后,出现数据无法匹配的情况 在用plsql点击的时候,发现出现换行符的情况,从而使用下面的方法进行匹配 select q.comments from q where repl ...