Iphone 如何更改iOS上后退按钮的位置?

Iphone 如何更改iOS上后退按钮的位置?,iphone,ios,objective-c,uinavigationcontroller,back-button,Iphone,Ios,Objective C,Uinavigationcontroller,Back Button,您可以看到,我正在制作一个完全自定义的导航栏,当我创建“后退”按钮时,它不会停留在正确的位置,正如您在代码下面看到的那样 这是我的应用程序代码 - (void)viewDidLoad { [super viewDidLoad]; if(self.navigationController.viewControllers.count > 1) { UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCu

您可以看到,我正在制作一个完全自定义的导航栏,当我创建“后退”按钮时,它不会停留在正确的位置,正如您在代码下面看到的那样

这是我的应用程序代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    if(self.navigationController.viewControllers.count > 1) {
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    
    [backButton setTitle:@"" forState:UIControlStateNormal];
    [backButton setBackgroundImage:[UIImage imageNamed:@"backButton.png"] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside];
    backButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 45.0f);
    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    
    self.navigationItem.leftBarButtonItem = backButtonItem;
}
}


你不能改变,你必须隐藏它

请看此处发布的页面:


您需要先隐藏导航栏

    [self.navigationController setNavigationBarHidden:YES animated:NO];
然后创建自定义UIButton

    UIButton *btn1=[UIButton  buttonWithType:UIButtonTypeCustom];
    [btn1 setFrame:CGRectMake(10, 0, 60, 40)];// Frame u want

    [btn1 setImage:[UIImage imageNamed:@"BT_ipad_P_backbward@2x.png"] forState:UIControlStateNormal];
    [btn1 addTarget:self action:@selector(Click_backward:) forControlEvents: UIControlEventTouchUpInside];
btn1.tintColor=[UIColor purpleColor];
    [self.view addSubview:btn1];

我想你可以修改contentEdgeInsets来确定按钮的位置

大概是这样的:

[backButton setContentEdgeInsets:UIEdgeInsetsMake(5,0,-5,0)]

来自

contentEdgeInsets

围绕所有按钮内容的矩形的插入页边距或起始页边距

@属性(非原子)UIEdgeInsets contentEdgeInsets


讨论使用此属性调整按钮内容的有效图形矩形的大小并重新定位。内容包括按钮图像和按钮标题。可以为四个插图(顶部、左侧、底部、右侧)中的每一个指定不同的值。正值将收缩或插入该边,使其靠近按钮的中心。负值会扩展或超出该边。使用UIEdgeInsetsMake函数构造此属性的值。默认值为UIEdgeInsetsZero。

您可以渲染左侧有一定间距的较大图像

UIImage *origImage = [UIImage imageNamed:@"button-thin-hamburger.png"];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(origImage.size.width + 10, origImage.size.height), NO, 0.0);
[origImage drawInRect:CGRectMake(10, 0, origImage.size.width, origImage.size.height)];
UIImage *buttonImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@""
                                                               style:UIBarButtonItemStylePlain
                                                              target:nil
                                                              action:nil];
self.navigationItem.backBarButtonItem = backButton;

[[UINavigationBar appearance] setBackIndicatorImage:buttonImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:buttonImage];

虽然这可能从技术上回答了这个问题,但请您在这里总结一下链接的材料。否则,由于链接腐烂,答案可能会失去它的有用性。不,我知道如何删除后退按钮的标题,只需更改位置。有可能吗?谢谢你的回答!嗨,朋友,我使用数组添加了四个导航按钮。。工作正常,但后指示灯按钮隐藏。如何纠正此问题。