我们发现,在设置navigationItem的leftBarButtonItem或rightBarButtonItem时,用CustomView初始化UIBarButtonItem,不论怎么设置CustomView的frame,添加到导航条上之后总是和屏幕边界有一定的间距(5pix),如何自由调整这个间距呢?

初始化一个用于控制间距的UIBarButtonItem实例negativeSpacer,并设置negativeSpacer的width属性的值,设为-5的时候,正好可以使按钮与屏幕边界值为0,以rightBarButtonItem情况为例

_rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];

_rightBtn.frame = CGRectMake(0, 0,60, 40);

_rightBtn.titleLabel.font = [UIFont systemFontOfSize:14.f];

[_rightBtn setTitleColor:hexColor(808080) forState:UIControlStateNormal];

[_rightBtn setTitle:@"全部已读" forState:UIControlStateNormal];

[_rightBtn addTarget:self action:@selector(clearAllUnreadMessage) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc]initWithCustomView:_rightBtn];

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

// width为负数时,相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整

// 为0;width为正数时,正好相反,相当于往左移动width数值个像素

negativeSpacer.width = -10;

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, rightBarItem, nil];

(0027)iOS 开发之调整导航条上BarButtonItem与屏幕边界的间距相关推荐

  1. iOS分享短信导航条上白色,无取消按钮,无法返回应用

    为什么80%的码农都做不了架构师?>>>    在使用第三方分享,分享到短信进入短信界面,不显示新信息和取消的字样,导致无法返回原应用. 如果出现此种情况,请检查你是否使用了FDFu ...

  2. iOS 发现导航条上按钮的一个bug

    0x00 自定义 导航条上的按钮,可以通过自定义视图的方式来创建 然而,有趣的事情发生了- 测试环境: Xcode: Version 11.7 (11E801a) 真机 0x01 通过 UIButto ...

  3. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇-导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  4. iOS 修改状态栏、导航条颜色及文字颜色

    在开发过程中,我们总是遇到这样那样的特殊要求,比如在指定页面展示特殊的样式,完全异于整个app的风格,为此有很多办法解决,今天我来记录其中一种,我们互相学习交流.如有不妥还请指正,如有更好的方案,欢迎 ...

  5. ios开发之使用多文件上传的简单封装最原始的

    ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...

  6. IOS开发基础之单文件上传基础最原始的方式

    IOS开发基础之单文件上传基础最原始的方式 info.plist 加入一行代码 <key>NSAppTransportSecurity</key><dict>< ...

  7. VS 2015 开发Android底部导航条----[实例代码,多图]

    1.废话背景介绍  在Build 2016开发者大会上,微软宣布,Xamarin将被整合进所有版本的Visual Studio之中. 这也就是说,Xamarin将免费提供给所有购买了Visual St ...

  8. iOS开发基础-常用组件(上)

    目录 1.UILabel 2.UIScrollView(滚动视图) 3.UINavigationController(导航控制器) 4.UITableView(表格) 5.UIImageView(图像 ...

  9. iOS开发中隐藏导航栏的分割线

    iOS开发中经常会遇到需要隐藏导航栏的分割线的需求,之前已经有两种方法 方法一 直接设置navigationBar的ShadowImage和BackgroundImag,这样做可以一劳永逸,在当前导航 ...

最新文章

  1. 3D 激光雷达地图相对精度自动评价算法
  2. 入门NLP、实现语音识别和语音合成,用这个开源工具SoEasy | 英伟达NLP公开课
  3. placeholder在IE8中兼容性问题解决
  4. [zz]从HDFS看分布式文件系统的设计需求
  5. elementary OS下netbeans中文乱码的问题
  6. 余凯:不做AI芯片,如何改变世界? | 变局者
  7. 我就不信发不出去,工 作 时候用的,来啊=》模板下载
  8. 【JAVA】线程安全的案例
  9. VideoPlayer播放组件详解-Unity使用官方组件播放视频
  10. linux下用impdp导入dmp文件
  11. 【python中级】 获取系统的局域网ip地址
  12. pandas 按列 tolist
  13. 移动智能终端PIN码破解
  14. 【游戏开发小技】Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)
  15. 一些版本管理常用的文档链接
  16. 【计算机网络】计算机网络
  17. 【Android】图像像素点理解
  18. php 读取 excel 文件并上传数据库
  19. 安装win10系统的详细步骤
  20. Audio标签常用属性

热门文章

  1. asp.net MVC 的处理流程
  2. win 常用网络命令
  3. python中time模块常用功能
  4. .NET EF框架的安装、及三种开发模式
  5. [bzoj4131]并行博弈_博弈论
  6. 超详细的java生成excel文件并下载
  7. 服务端工程师入门与进阶 Java 版
  8. C# 错误!!容量超出了最大容量。参数名: capacity 这个是什么问题呢?
  9. HDU4472 Count
  10. 重装IE后,ASP.NET无法按F5启动项目的解决方法