如何更改 iOS 上后退按钮的位置?
Posted
技术标签:
【中文标题】如何更改 iOS 上后退按钮的位置?【英文标题】:How do I change the location of the back button on iOS? 【发布时间】:2013-01-24 22:34:05 【问题描述】:您看到我正在制作一个完全自定义的导航栏,当我创建后退按钮时,它并没有停留在正确的位置,正如您在代码下方看到的那样。
这是我的应用程序代码
- (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;
【问题讨论】:
【参考方案1】:我认为你可以修改 contentEdgeInsets 来确定按钮的位置。
类似这样的:
[backButton setContentEdgeInsets:UIEdgeInsetsMake(5, 0, -5, 0)];
来自UIButton Class Reference
contentEdgeInsets
围绕所有按钮内容的矩形的内边距或外边距。
@property(nonatomic) UIEdgeInsets contentEdgeInsets
讨论使用此属性来调整按钮内容的有效绘图矩形的大小和重新定位。内容包括按钮图像和按钮标题。您可以为四个插图(上、左、下、右)中的每一个指定不同的值。正值会缩小或插入该边缘 - 将其移近按钮的中心。负值扩展或开始该边缘。使用 UIEdgeInsetsMake 函数为此属性构造一个值。默认值为 UIEdgeInsetsZero。
【讨论】:
【参考方案2】:你可以渲染一个更大的图像,左边有一些间距。
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];
【讨论】:
【参考方案3】:好吧,你不能改变,你必须隐藏它。
看看这里发布的这个页面:
http://rafaelsteil.com/2011/07/23/crappy-ios-apis-uinavigationcontroller/
Can't change back button title but I can hide it
【讨论】:
虽然这可能从技术上回答问题,it would be preferable 供您在此处总结链接材料。否则,答案可能会因链接失效而失去其用处。 不,我知道如何删除后退按钮的标题,只需更改位置即可。是否可以使用 cgrect【参考方案4】:你需要先隐藏 NavigationBar...
[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];
【讨论】:
嗨,朋友,我使用数组添加了四个导航按钮。它工作正常,但后退指示器按钮隐藏。如何纠正这个问题。以上是关于如何更改 iOS 上后退按钮的位置?的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何使用下一步和后退按钮更改标签 (DetailView)