leftBarButtonItem 自定义UIView 向左偏移(非UIButton)

前提: leftBarButtonItem无法通过frame的x设置item的位置

目的:让UINavigationBar的左边,右边item 自定义偏移(下面以leftBarButtonItem为例)
  • 一般leftBarButtonItem用UIButton自定义 都会出现图片过右的情况,我们想按钮内容(文字,图片)做偏移
  • leftBarButtonItem用UIButton自定义 可通过UIButton中的contentEdgeInsets属性,去实现按钮内容偏移
  • 或者通过UIButton中的contentHorizontalAlignment属性实现按钮内容的偏移
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setTitle:@"返回" forState:UIControlStateNormal];
        button.size = CGSizeMake(70, 30);

        // 让按钮内部的所有内容左对齐
        button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        // 让按钮的内容往左边偏移10
        button.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);
        
        // 修改导航栏左边的item
        navVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
  • leftBarButtonItem中的CustomView, 如果设置成UIView, 则就没有contentEdgeInsets和contentHorizontalAlignment属性去修改的位置
  • 面对这种情况,苹果给我们提供了UIBarButtonSystemItemFixedSpace这种item类型来处理.自定义View位置偏移
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFixedSpace target:nil action:nil];  
negativeSpacer.width = -15;  //偏移距离  -向左偏移, +向右偏移
self.navigationItem.leftBarButtonItems = @[negativeSpacer, [[UIBarButtonItem alloc] initWithCustomView:button]];  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,062评论 25 709
  • 小时候听收音机,偶然间听到一个评书片段,讲一位美丽女子武艺高强,性格乖张,一个摸透她脾气的人知道她外表高兴时暗藏杀...
    言卯阅读 2,312评论 0 0
  • 奥拓 (二) 那次追尾帕杰罗之后,我明白一个道理:再有人加塞儿时,是不能让它进来,但,也要看着前面。后来就再也没追...
    老达阅读 2,515评论 0 1
  • 心中的欢乐盛不下 2008-03-19 14:42 阅读(168)评论(43) 今年的生日,是我有生以来过的最隆重...
    零星往事阅读 3,085评论 0 0