胶印的UIBarButtonItem?(UIBarButtonItem Offset?)

2019-07-30 12:59发布

我想,以抵消UIBarButtonItems在我的应用程序,我需要他们稍微偏移由于我用我的导航栏,以便它正确的所有行组成的图像。 我已成功地做到这一点,像这样:

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackButtonBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];

我有两个疑问,虽然。

  1. 这将停止按钮有什么突出的状态,它们的功能却没有明显萦绕按下。 无论如何围绕这吗?

  2. 更重要的是,这个效果很好推我的按钮在我的导航栏向上,但它在我的工具栏推起来,以及在那里我需要对面的屏幕的底部,实际上压下来一点。 我该如何处理呢?

总是赞赏任何帮助,谢谢。

Answer 1:

原来我已经找到了解决方案! 您可以调整这些属性appearence取决于什么查看你的对象是在使用下列内容:

appearanceWhenContainedIn:

取而代之的是标准的

appearance

所以,我已经实现了我的需求,像这样,调整上下视如果按钮是一个导航栏或工具栏:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];

    [[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setBackButtonBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];


Answer 2:

标签栏项目帧可以直接操作:

// get the handle of your tabBar (probably self.tabBarController.tabBar
for (UIView *item in tabBar.items) {
    item.frame = CGRectOffset(item.frame, 0.0, -3.0);
}

用于水平调整位置A较少侵入方法是利用栏按钮项固定和灵活的空间的:

// this will put three pixels between whatever items it sits between
UIBarButtonItem *fixed = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]
fixed.width = 3.0;

将这些到您的项目数组。 所以,如果你想用的3px分开两个项目,这样做:

tabBar.items = [NSArray arrayWithObjects:button1, fixed, button2, nil];


文章来源: UIBarButtonItem Offset?