您看到我正在创建一个完全自定义的导航栏,当我创建后退按钮时,它不会保留在正确的位置,因为您可以在代码下方看到。
这是我的应用代码
- (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;
}
}
Pic http://s8.postimage.org/k5faqz0jp/Screen_Shot_2013_01_24_at_5_30_10_PM.png
答案 0 :(得分:6)
我认为你可以修改contentEdgeInsets来定位按钮的位置。
这样的事情:
[backButton setContentEdgeInsets:UIEdgeInsetsMake(5,0,-5,0)];
<强> contentEdgeInsets 强>
围绕所有按钮内容的矩形的插入或开始边距。
@property(非原子)UIEdgeInsets contentEdgeInsets
讨论使用此属性调整按钮内容的有效绘图矩形并重新定位。内容包括按钮图像和按钮标题。您可以为四个插图(顶部,左侧,底部,右侧)中的每一个指定不同的值。正值会缩小或缩小,使其靠近按钮的中心。负值会扩展或偏离该边缘。使用UIEdgeInsetsMake函数为此属性构造值。默认值为UIEdgeInsetsZero。
答案 1 :(得分:3)
您可以渲染左侧有一些间距的较大图像。
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];
答案 2 :(得分:0)
嗯,你不能改变,你必须隐藏它。
看看这里发布的这个页面:
http://rafaelsteil.com/2011/07/23/crappy-ios-apis-uinavigationcontroller/
答案 3 :(得分:0)
你需要先隐藏NavigationBar ......
[self.navigationController setNavigationBarHidden:YES animated:NO];
然后创建Custom 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];