【问题标题】:Reduce blank space between bar button items in UINavigationBar减少 UINavigationBar 中条形按钮项之间的空白空间
【发布时间】:2014-08-04 08:33:42
【问题描述】:

我注意到条形按钮项之间的空白空间很大。我想减少空间以便为我的标题腾出更多空间。我尝试创建固定空间,然后将其添加到按钮中,但它不起作用。有人知道怎么做吗?

UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    fixedItem.width = 10.0f;
self.navigationItem.rightBarButtonItems = @[settingsButtonItem, fixedItem, speakerButtonItem, fixedItem, favouriteButtonItem];

【问题讨论】:

    标签: ios uinavigationbar uinavigationitem rightbarbuttonitem


    【解决方案1】:

    你已经接近了,但你需要的是一个负的固定空间。如果您的其他 UIBarButtonItems 使用自定义视图,请检查这些视图的框架。这是一个添加两个更靠近边缘的右栏按钮项目的示例。在您的情况下,您还需要在按钮之间添加负空间。

    UIBarButtonItem *negativeSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
        negativeSpace.width = -8;
    
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    backButton.frame = CGRectMake(0, 0, 44, 44);
    [backButton setImage:[[UIImage imageNamed:@"ic_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]
                forState:UIControlStateNormal];
    backButton.imageView.tintColor = [UIColor whiteColor];
    [backButton addTarget:self
                   action:@selector(backPressed)
         forControlEvents:UIControlEventTouchUpInside];
    
    self.backNavButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    self.backNavButton.enabled = NO;
    
    UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom];
    forwardButton.frame = CGRectMake(0, 0, 44, 44);
    [forwardButton setImage:[forwardImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]
                   forState:UIControlStateNormal];
    forwardButton.imageView.tintColor = [UIColor whiteColor];
    [forwardButton addTarget:self
                      action:@selector(forwardPressed)
            forControlEvents:UIControlEventTouchUpInside];
    
    self.forwardNavButton = [[UIBarButtonItem alloc] initWithCustomView:forwardButton];
    self.forwardNavButton.enabled = NO;
    
    self.navigationItem.rightBarButtonItems = @[negativeSpace,self.forwardNavButton,self.backNavButton];
    

    【讨论】:

    • 非常感谢!诀窍是首先设置 UIButtons 及其框架,然后才设置相应的 UIBarButtons。我一直在为此苦苦挣扎。
    【解决方案2】:

    使用 Xcode 6.4,这对我来说非常棒,只需 1 行代码!
    https://stackoverflow.com/a/26469607/3634990

    self.myBarButtonItem.imageInsets = UIEdgeInsetsMake(0, 25, 0, -25);
    

    注意-不幸的是,这不会移动按钮的点击区域,只会移动它的图像。但是,如果您只需要稍微移动按钮,这是一个很好的解决方案!

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2012-09-17
      相关资源
      最近更新 更多