在常见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相关推荐

  1. android极光推送声音,【极光推送】iOS APNS 自定义铃声

    IOS APNS自定义推送铃声 是推送给苹果服务器时 将 推送的 key = sound 的value = @"custom.xxx".自定义铃声支持几种固定的格式.本人只以.ca ...

  2. iOS UIFont自定义字体

    1. 将字体文件导入工程(.ttf) 2. 打开Build Phases -> Copy Bundle Resources,确定字体文件已经添加 3. 编辑info.plist文件,添加Font ...

  3. ios nslinkattributename 自定义url_iOS音视频播放指南(二)

    没看第一篇的小伙伴可以先看第一篇 wlzz:iOS音视频播放指南(一)​zhuanlan.zhihu.com 本章主要内容 画中画支持 后台音频播放,锁屏界面显示,远程音频控制 在耳机插拔.接听电话等 ...

  4. iOS开发-自定义UIAlterView(iOS 7)

    App中不可能少了弹框,弹框是交互的必要形式,使用起来也非常简单,不过最近需要自定义一个弹框,虽然iOS本身的弹框已经能满足大部分的需求,但是不可避免还是需要做一些自定义的工作.iOS7之前是可以自定 ...

  5. iOS 为自定义返回按钮的页面添加右滑返回

    2019独角兽企业重金招聘Python工程师标准>>> 苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationCo ...

  6. iOS 关于自定义转场动画,以UITabBarController为例

    1.小记 关于自定义转场动画,只要你理清他的"套路",你就可以随心所欲地自定义了. 大体思路就是:遵守对应的代理协议,然后设置对应的代理,实现代理方法,这个代理方法要返回的值就是你 ...

  7. iOS开发自定义键盘回车键Return Key

    在iOS开发中,用户在进行文本输入的时候,往往会用到虚拟键盘上的回车键,也就是Return Key.回车键有时候可以是"完成"(表示输入结束),可以是"下一项" ...

  8. iOS - 使用自定义字体-苹方字体

    苹方提供了六个字重,font-family 定义如下: 苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; 苹方-简 极细体 font-fami ...

  9. 小程序安卓和ios使用自定义字体,解决安卓不生效问题

    官网介绍 官网文件的loadFontFace也可以实现自定义字体引入和使用,如果需要在app.js使用记得加上global:true,不然app.js不会执行 背景:项目中要把所有字体改为宋体,这里我 ...

最新文章

  1. K近邻算法(KNN)原理小结
  2. 把数据转换为在内存中Tree(树形结构)。_Linux的中断处理机制 [二] - 数据结构(2)...
  3. 阿里云云监控agent插件 - Linux版
  4. 安装Microsoft Sysprep工具
  5. docker发布spring cloud应用
  6. 机器学习TP FP FN TN评价指标
  7. 邮件策略在域树中的实战应用:Exchange2003系列之十
  8. itext poi 学习之旅 (3)读取数据库信息并由excel展现出来
  9. 用Python分析了我的微信好友,原来我身边都是这样的人……绝了
  10. R语言绘图技巧1:二元隐函数的绘制方法
  11. 牛客假日团队赛31 A Mowing the Lawn (单调队列维护dp)
  12. 用一个例子说明什么是多态
  13. 35岁的程序员:第24章,兼职项目
  14. 计算机无法删除ie,ie浏览器图标删除不了怎么办 Win7中IE浏览器图标无法删除解决方法...
  15. 单元测试实践篇:Mock
  16. keil 调用 nop警告 174-Dexpression has no effect
  17. Node.js 中的 Buffer 和字符编码
  18. 2、maven案例idexXML调模板maven运Tomcat报错org.apache.jasper.JasperException: Unable to compile class forJSP
  19. 贪心法求解背包问题 C++
  20. linux中recvfrom读取速度,Linux系统调用-- recv/recvfrom 函数详解

热门文章

  1. RedHat Enterprise 5.1下OpenLDAP的配置及PAMNSS的配置
  2. Web3与智能合约交互实战
  3. 数据分析从头学_数据新闻学入门指南:让我们从头开始构建故事
  4. 将Spring Boot项目打包成jar包war包
  5. 安卓java代码标签_Android实现动态添加标签及其点击事件
  6. 导入sql时出现Invalid default value for ‘create_time‘报错处理方法
  7. 树莓派修改密码(有单独屏幕)
  8. Oracle设置date数据比较,ORACLE DATE和TIMESTAMP数据类型的比较
  9. 零基础学习java,这些书一定要看!
  10. 最新Java培训-NIO实战教程