UIBarButtonItem偏移量?

Jos*_*ane 2 iphone objective-c uinavigationbar uitoolbar uibarbuttonitem

我试图在我的应用程序中偏移UIBarButtonItems,我需要它们稍微偏移,因为我用于导航栏的图像所以它们都正确排列.我设法做到这样:

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
    [[UIBarButtonItem appearance] setBackButtonBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

我有两个疑问.

  1. 这会停止按钮具有任何突出显示的状态,它们可以正常工作,但不会明显地按下按钮.无论如何围绕这个?

  2. 更重要的是,这可以很好地在我的导航栏中向上推动我的按钮,但是它会将它们推到我的工具栏以及屏幕底部我需要相反的位置,实际上将它们向下推了一下.我怎么处理这个?

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

Jos*_*ane 14

事实证明我找到了解决方案!您可以使用以下内容根据对象的视图调整这些外观属性:

appearanceWhenContainedIn:
Run Code Online (Sandbox Code Playgroud)

而不是标准

appearance
Run Code Online (Sandbox Code Playgroud)

所以我已经实现了我的需求,根据按钮是否在导航栏或工具栏中上下调整:

[[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];
Run Code Online (Sandbox Code Playgroud)