iOS开发之UIButton
2015-12-03 19:33
543 查看
本文主要是自定义UIButton,调整UIButton内部的文字和图标的位置(交换按钮和图标的位置)
新建一个继承自UIButton的类,在.m文件中实现UIButton自带的两个方法:titleRectForContentRect:和imageRectForContentRect:
来看一下正常的按钮样式:
下面开始自定义:
这样的按钮通常情况下都是显示在导航栏的标题中。
按钮的高亮状态会让按钮变的灰灰的,有时候我们需要取消按钮的高亮状态,这个时候我们需要重写setHighlighted:方法来覆盖父方法。
新建一个继承自UIButton的类,在.m文件中实现UIButton自带的两个方法:titleRectForContentRect:和imageRectForContentRect:
来看一下正常的按钮样式:
下面开始自定义:
/** * 计算按钮文字的位置和尺寸 */ - (CGRect)titleRectForContentRect:(CGRect)contentRect { CGFloat titleX = 0;// 文字的x坐标为0 CGFloat titleY = 0;// 文字的y坐标为0 CGFloat titleH = contentRect.size.height;// 文字的高度就等于按钮的高度 // 根据文字计算文字的宽度 NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributeName] = [UIFont systemFontOfSize:16.0];// 字体 CGFloat titleW = [self.currentTitle boundingRectWithSize:CGSizeMake(MAXFLOAT, titleH) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size.width;// iOS7之后 return CGRectMake(titleX, titleY, titleW, titleH); } /** * 计算按钮图标的位置和尺寸 */ - (CGRect)imageRectForContentRect:(CGRect)contentRect { // 图标的宽度 CGFloat imageH = contentRect.size.height;// 图标的高度就等于按钮的高度 CGFloat imageW = imageH; CGFloat imageX = contentRect.size.width - imageH;// 图标的x坐标 CGFloat imageY = 0;// 图标的y坐标为0 return CGRectMake(imageX, imageY, imageW, imageH); }接下来就是根据需要对按钮内部的文字和图标进行微调
// 如果按钮是从xib文件中加载的 - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self setup]; } return self; } // 如果是用代码创建按钮 - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setup]; } return self; } /** * 初始化方法 */ - (void)setup { // 设置图片居中 self.imageView.contentMode = UIViewContentModeCenter; // 按钮文字的字体一定要和计算的时候相同 self.titleLabel.font = [UIFont systemFontOfSize:16.0]; // 高亮时不需要调整图片 self.adjustsImageWhenHighlighted = NO; }运行之后按钮就变成这样的了:
这样的按钮通常情况下都是显示在导航栏的标题中。
按钮的高亮状态会让按钮变的灰灰的,有时候我们需要取消按钮的高亮状态,这个时候我们需要重写setHighlighted:方法来覆盖父方法。
// 重写方法,覆盖父方法,取消按钮的高亮状态 - (void)setHighlighted:(BOOL)highlighted { }这样即可取消按钮的高亮状态。
相关文章推荐
- UI第十六天:⺴络编程
- iOS_UITabBarController 标签视图控制器
- iOS 开发 中级:UIToolbar,UINavigationBar,UITabBar,UIBarButtonItem,UITabBarItem自定义方法总结
- UITabBarController的每个item的title如何不占位置
- ios 开发中,如何设置 uitabbar 里面 tabbaritem 不显示文字,只显示图片,图片垂直居中?
- easyui 合并单元格
- iOS-UITextField-常用方法
- iOS UITabBarController tabbar 上面的文字title 怎么移动位置
- miniui中的相关问题
- confluence是一块商用的专业wiki
- 1950QuickPow(快速幂加法)
- UITableView的contentSize
- 杭电1159Common Subsequence
- 转----详解IOS开发应用之并发Dispatch Queues
- POS主密钥与工作密钥关联详解
- AuidioStreamPlayer简易实现
- 【并查集】:poj2524,Ubiquitous Religions
- iOS开发UI篇—UIWindow简单介绍
- Java基础---图形用户界面GUI(二)
- 利用UIButton简单实现TOM猫