我正在制作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来测试但是我的问题是这两个按钮都不在屏幕的角落,如此处所示。
大多数其他应用程序的角落都有导航栏按钮,这可以从我在网上找到的另一个应用程序中看到
我试图改变这里的值,但没有做任何事情 - 按钮保持原样。
// Changing frames x-coordinate
backButton.frame = CGRectMake(-220, 0, 100, 70);
如果要在导航栏的角落设置按钮,我需要做什么?
编辑:如果我使用[backButton sizeToFit];我的图像显示如下(顶部灰色栏是导航栏)。我需要使图像尺寸正确吗?
答案 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减小到更小的东西,事情应该更合适。