美文网首页IOS收藏ios学习资料
leftBarButtonItem 自定义UIView 向左偏移

leftBarButtonItem 自定义UIView 向左偏移

作者: dymost | 来源:发表于2016-04-26 11:04 被阅读3451次

    前提: 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]];  
    

    相关文章

      网友评论

      • 简书花花:第二种方法没用啊
      • 小强神坑之神也:被截是我设置圆角需要,现在放弃圆角了
      • 小强神坑之神也:用模拟器试了,准确的说11.3不行,其它模拟器可以,说明11.3的系统手机不行
      • 小强神坑之神也:不管用啊,我view里面放了button,上面两种方法都不管用,第一种,由于导航栏有背景,会被截掉一部分,第二种完全没反应
      • 施主小欣:好用 感谢~!

      本文标题:leftBarButtonItem 自定义UIView 向左偏移

      本文链接:https://www.haomeiwen.com/subject/ormqrttx.html