Ios ui导航栏-更改高度/添加大按钮

Ios ui导航栏-更改高度/添加大按钮,ios,objective-c,uibuttonbaritem,Ios,Objective C,Uibuttonbaritem,我需要更改导航栏的高度,并在左上角添加一个自定义图像按钮。我有一段路要走,但现在迷失了在正确的位置获得自定义图像按钮。以下是我所拥有的: 为了调整高度,我使用以下一种方法创建了UINavBar类别: @实现UINavigationBar(myNavBar) 我还创建了一个UINavigationController子类来修改按钮。下面是该类的viewDidLoad: UIImage *navBackgroundImage = [UIImage imageNamed:@"bar"]; [[UINa

我需要更改导航栏的高度,并在左上角添加一个自定义图像按钮。我有一段路要走,但现在迷失了在正确的位置获得自定义图像按钮。以下是我所拥有的:

为了调整高度,我使用以下一种方法创建了UINavBar类别: @实现UINavigationBar(myNavBar)

我还创建了一个UINavigationController子类来修改按钮。下面是该类的viewDidLoad:

UIImage *navBackgroundImage = [UIImage imageNamed:@"bar"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];


// Change the appearance of back button
UIImage *backButtonImage = [[UIImage imageNamed:@"back_off"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

// Change the appearance of other navigation button
UIImage *barButtonImage = [[UIImage imageNamed:@"menu_off"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
到目前为止,这个解决方案调整了顶部导航栏的大小,但将我的按钮定位在一个奇怪的位置。以下是我想要的和正在发生的事情:

我想要什么

我得到了什么

我使用了一个UIBarButtonItem类别,该类别具有偏移属性:

UIBarButtonItem+CustomImage.h UIBarButtonItem+CustomImage.m 示例用法
我使用的UIBarButtonItem类别具有偏移属性:

UIBarButtonItem+CustomImage.h UIBarButtonItem+CustomImage.m 示例用法
现在就去试试这个!我会让你知道的。现在就试试这个!我会让你知道的。
UIImage *navBackgroundImage = [UIImage imageNamed:@"bar"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];


// Change the appearance of back button
UIImage *backButtonImage = [[UIImage imageNamed:@"back_off"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

// Change the appearance of other navigation button
UIImage *barButtonImage = [[UIImage imageNamed:@"menu_off"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
@interface UIBarButtonItem (CustomImage)

+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image target:(id)target action:(SEL)action offset:(CGPoint)offset;

@end
#import "UIBarButtonItem+CustomImage.h"

@implementation UIBarButtonItem (CustomImage)

+ (UIBarButtonItem *)barItemWithImage:(UIImage *)image target:(id)target action:(SEL)action offset:(CGPoint)offset {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:image forState:UIControlStateNormal];
    [button setFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height)];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    [button setBounds:CGRectOffset(button.bounds, 0.0, -10.0)];

    UIView *container = [[UIView alloc] initWithFrame:button.frame];
    [container setBounds:CGRectOffset(container.bounds, offset.x, offset.y)];
    [container addSubview:button];

    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:container];
    return item;
}

@end
#import "UIBarButtonItem+CustomImage.h"

UIBarButtonItem *settingsButton = [UIBarButtonItem barItemWithImage:settingsImage
                                                 target:self
                                                 action:@selector(revealSettings:)
                                                 offset:CGPointMake(0.0, 0.0)];

[self.navigationItem setLeftBarButtonItem:settingsButton];