-1

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

4

3 回答 3

1

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

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

你可以在 CustomView 的 initWithImage: 方法中设置任何你想要的框架:

- (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 的框架。

于 2013-10-10T11:48:58.153 回答
0

不,你不能改变UIBarButtonItem框架。相反,子类UINavigationBar

于 2013-10-10T10:09:24.773 回答
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;
于 2013-10-23T12:36:03.763 回答