导航栏按钮的位置

问题描述 投票:0回答:3

我正在制作一个 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

ios objective-c uinavigationitem
3个回答
1
投票

如果您想更改

UIBarButtonItem
的位置,您应该使用假条形物品作为间隔物

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

现在您可以设置栏项目数组以获得所需的结果

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

0
投票

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

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

然后打电话

[backButton sizeToFit];

之后

[backButton setImage:backImage forState:UIControlStateNormal];

如果这不起作用,则可能是 PNG 图像本身中存在空白。


0
投票

您是否尝试过裁剪您正在使用的图像(

customBackButton.png
)以消除任何透明边距?看起来图像可能有点宽。然后你可以将宽度从 100px 减小到更小的值,这样效果应该会更好。

© www.soinside.com 2019 - 2024. All rights reserved.