iOS关于自定义rightBarButtonItem
在常见iOS开发中,我们常遇到这样的需求,如下:
我们需要自定义导航栏右侧按钮,常见的自定义包装按钮如下:
//设置rightItem;
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 40, 30);
btn.selected = NO;
[btn setTitle:@"管理" forState:UIControlStateNormal];
[btn setTitle:@"取消" forState:UIControlStateSelected];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(tap:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithCustomView:btn];
[self.navigationItem setRightBarButtonItem:rightItem];
但通过这个方法,我们往往是不能调整自定义出来的UIview距离屏幕边界的方法,对于一些比价坑*的产品经理来说,这远远不能达不到他们那颗装*的心,这个时候我们只能通过如下方法来调整整个个customView距离右边边界的值:
//设置rightBarBtnItem样式:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 100, 30);
[btn setImage:[UIImage imageNamed:@"rightUp"] forState:UIControlStateNormal];
[btn setTitle:@"推荐奖励" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize: 15.0];
btn.titleLabel.textAlignment = NSTextAlignmentRight;
[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, 10, 0, 0)];
UIBarButtonItem *rewardItem = [[UIBarButtonItem alloc]initWithCustomView:btn];
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceItem.width = -15;
[btn addTarget:self action:@selector(pushToReward) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItems = @[spaceItem,rewardItem];
注意:这里着重强调的是给rightBarButtonItems弄成了一个数组,给它增加了一个spaceItem元素,用来控制customView距离右边的间距,本身rightBarButtonItem中包装的button距离它父控件,也就是rightBarButtonItem的值是5,当我们把width设置为-15后,相当于把整个rightBarButtonItem向右移动了10,对于特殊需求,可自行去调整.
转载于:https://www.cnblogs.com/shineDongEr/p/5539545.html
iOS关于自定义rightBarButtonItem相关推荐
- android极光推送声音,【极光推送】iOS APNS 自定义铃声
IOS APNS自定义推送铃声 是推送给苹果服务器时 将 推送的 key = sound 的value = @"custom.xxx".自定义铃声支持几种固定的格式.本人只以.ca ...
- iOS UIFont自定义字体
1. 将字体文件导入工程(.ttf) 2. 打开Build Phases -> Copy Bundle Resources,确定字体文件已经添加 3. 编辑info.plist文件,添加Font ...
- ios nslinkattributename 自定义url_iOS音视频播放指南(二)
没看第一篇的小伙伴可以先看第一篇 wlzz:iOS音视频播放指南(一)zhuanlan.zhihu.com 本章主要内容 画中画支持 后台音频播放,锁屏界面显示,远程音频控制 在耳机插拔.接听电话等 ...
- iOS开发-自定义UIAlterView(iOS 7)
App中不可能少了弹框,弹框是交互的必要形式,使用起来也非常简单,不过最近需要自定义一个弹框,虽然iOS本身的弹框已经能满足大部分的需求,但是不可避免还是需要做一些自定义的工作.iOS7之前是可以自定 ...
- iOS 为自定义返回按钮的页面添加右滑返回
2019独角兽企业重金招聘Python工程师标准>>> 苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationCo ...
- iOS 关于自定义转场动画,以UITabBarController为例
1.小记 关于自定义转场动画,只要你理清他的"套路",你就可以随心所欲地自定义了. 大体思路就是:遵守对应的代理协议,然后设置对应的代理,实现代理方法,这个代理方法要返回的值就是你 ...
- iOS开发自定义键盘回车键Return Key
在iOS开发中,用户在进行文本输入的时候,往往会用到虚拟键盘上的回车键,也就是Return Key.回车键有时候可以是"完成"(表示输入结束),可以是"下一项" ...
- iOS - 使用自定义字体-苹方字体
苹方提供了六个字重,font-family 定义如下: 苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; 苹方-简 极细体 font-fami ...
- 小程序安卓和ios使用自定义字体,解决安卓不生效问题
官网介绍 官网文件的loadFontFace也可以实现自定义字体引入和使用,如果需要在app.js使用记得加上global:true,不然app.js不会执行 背景:项目中要把所有字体改为宋体,这里我 ...
最新文章
- K近邻算法(KNN)原理小结
- 把数据转换为在内存中Tree(树形结构)。_Linux的中断处理机制 [二] - 数据结构(2)...
- 阿里云云监控agent插件 - Linux版
- 安装Microsoft Sysprep工具
- docker发布spring cloud应用
- 机器学习TP FP FN TN评价指标
- 邮件策略在域树中的实战应用:Exchange2003系列之十
- itext poi 学习之旅 (3)读取数据库信息并由excel展现出来
- 用Python分析了我的微信好友,原来我身边都是这样的人……绝了
- R语言绘图技巧1:二元隐函数的绘制方法
- 牛客假日团队赛31 A Mowing the Lawn (单调队列维护dp)
- 用一个例子说明什么是多态
- 35岁的程序员:第24章,兼职项目
- 计算机无法删除ie,ie浏览器图标删除不了怎么办 Win7中IE浏览器图标无法删除解决方法...
- 单元测试实践篇:Mock
- keil 调用 nop警告 174-Dexpression has no effect
- Node.js 中的 Buffer 和字符编码
- 2、maven案例idexXML调模板maven运Tomcat报错org.apache.jasper.JasperException: Unable to compile class forJSP
- 贪心法求解背包问题 C++
- linux中recvfrom读取速度,Linux系统调用-- recv/recvfrom 函数详解
热门文章
- RedHat Enterprise 5.1下OpenLDAP的配置及PAMNSS的配置
- Web3与智能合约交互实战
- 数据分析从头学_数据新闻学入门指南:让我们从头开始构建故事
- 将Spring Boot项目打包成jar包war包
- 安卓java代码标签_Android实现动态添加标签及其点击事件
- 导入sql时出现Invalid default value for ‘create_time‘报错处理方法
- 树莓派修改密码(有单独屏幕)
- Oracle设置date数据比较,ORACLE DATE和TIMESTAMP数据类型的比较
- 零基础学习java,这些书一定要看!
- 最新Java培训-NIO实战教程