导航栏按钮的放置

时间:2014-08-07 19:55:53

标签: ios uinavigationitem

我正在制作iPhone应用程序,我有一个UINavigationController作为我的根视图,然后是UIVIewControllers。我的注册按钮会转到注册屏幕,它会自动为我创建一个导航栏,左上方有后退按钮。

我用自己的图片替换了标准后退按钮,代码如下:

UIImage *backImage = [UIImage imageNamed:@"customBackButton.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(0, 0, 100, 70);
[backButton setImage:backImage forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popNavigationController:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton] ;
self.navigationItem.leftBarButtonItem = backBarButtonItem;

我还添加了一个rightBarButtonItem来测试但是我的问题是这两个按钮都不在屏幕的角落,如此处所示。 enter image description here

大多数其他应用程序的角落都有导航栏按钮,这可以从我在网上找到的另一个应用程序中看到

enter image description here

我试图改变这里的值,但没有做任何事情 - 按钮保持原样。

// Changing frames x-coordinate
backButton.frame = CGRectMake(-220, 0, 100, 70);

如果要在导航栏的角落设置按钮,我需要做什么?

编辑:如果我使用[backButton sizeToFit];我的图像显示如下(顶部灰色栏是导航栏)。我需要使图像尺寸正确吗?

enter image description here

3 个答案:

答案 0 :(得分:1)

如果你想改变UIBarButtonItem的位置,你应该使用假酒吧物品作为垫片

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -10;

现在您可以设置条形码数组以达到所需的结果

self.navigationItem.leftBarButtonItems = @[negativeSpacer, backBarButtonItem];

答案 1 :(得分:0)

按钮的宽度太大。删除这一行:

backButton.frame = CGRectMake(0, 0, 100, 70);

然后致电

[backButton sizeToFit];

之后

[backButton setImage:backImage forState:UIControlStateNormal];

如果这不起作用,可能是PNG图像本身有空白区域。

答案 2 :(得分:0)

您是否尝试过裁剪您正在使用的图像(customBackButton.png)以消除任何透明边距?看起来图像可能有点宽。然后你可以将宽度从100px减小到更小的东西,事情应该更合适。