在iOS 7中定位导航栏按钮

时间:2013-10-10 10:00:56

标签: iphone ios ipad ios6 ios7

我正在使用导航栏按钮的自定义图像。在iOS 6中,如果我们使用按钮设置左栏按钮项,则其x值从10px开始。但是在iOS 7中,如果我们做同样的事情,按钮的x值从20px开始。我们有什么方法可以让它从10px开始,因为在iOS 7中按钮外观不是很好吗?

3 个答案:

答案 0 :(得分:1)

可以使用initWithCustomView:方法初始化UIBarButtonItems。因此,您可以创建一些自定义视图(在您的情况下使用自定义图像导航栏按钮项)并使用该自定义视图初始化栏按钮项。例如:

    CustomView *view = [[CustomView alloc] initWithImage:[UIImage imageNamed:@"back.png"]];
    UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:view];

您可以在initWithImage中设置所需的任何帧:CustomView的方法:

- (id)initWithImage:(UIImage *)image {
    self = [super initWithFrame:CGRectMake(0, 0, 50, 44)];

    CGRect backArrowFrame;


    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
        backArrowFrame = CGRectMake(-8, 12, 12.5, 20.5);
    } else {
        backArrowFrame = CGRectMake(-2, 12, 12.5, 20.5);
    }

    UIButton *imView = [[UIButton alloc] initWithFrame:backArrowFrame];
    [imView setContentMode:UIViewContentModeScaleAspectFit];
    [imView setBackgroundImage:image forState:UIControlStateNormal];
    [imView addTarget:target action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];

    [self addSubview:imView];


    return self;
}

通过这种方式,可以更改UIBarButtonItem的框架。

答案 1 :(得分:0)

不,您无法更改UIBarButtonItem框架。相反,子类UINavigationBar

答案 2 :(得分:0)

在ios7中添加按钮作为导航项,如下所示

UIButton *btnAdd = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)];

[btnAdd setContentMode:UIViewContentModeScaleAspectFit];

[btnAdd setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];

[btnAdd addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *btnAdd = [[UIBarButtonItem alloc] initWithCustomView:imView];

self.navigationItem.rightBarButtonItem = btnAdd;