在IOS Objective c应用程序中自定义导航栏
我想要我的导航栏像这样 我可以通过以下代码设置左侧按钮:在IOS Objective c应用程序中自定义导航栏,ios,objective-c,uinavigationbar,Ios,Objective C,Uinavigationbar,我想要我的导航栏像这样 我可以通过以下代码设置左侧按钮: -(void) setNavigationButtons:(NSString *)title{ UIImage *logoImage = [UIImage imageNamed:@"back-icon"]; UIButton *logoBackButton = [UIButton buttonWithType:UIButtonTypeCustom]; [logoBackButton setImage:logoIm
-(void) setNavigationButtons:(NSString *)title{
UIImage *logoImage = [UIImage imageNamed:@"back-icon"];
UIButton *logoBackButton = [UIButton buttonWithType:UIButtonTypeCustom];
[logoBackButton setImage:logoImage forState:UIControlStateNormal];
logoBackButton.frame = CGRectMake(0.0, 0.0, 50, 50);
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:logoBackButton];
[logoBackButton addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchDown];
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[Constants Instance].whiteColor}];
self.navigationController.navigationBar.barTintColor = [Constants Instance].navigationTitleColor;
[self setNavigationTitle:title];
self.navigationItem.leftBarButtonItem = backBarButtonItem;
}
-(void)setNavigationTitle:(NSString *)title{
self.navigationItem.title = title;
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor whiteColor],
NSFontAttributeName:[UIFont fontWithName:@"Nexa Light" size:20]}];
}
- (IBAction)backAction:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
但它并没有附在左侧,并且有边缘。我想把它固定在左边,就像上面的截图一样。我不想在那个按钮上显示任何像back之类的文本
类似的情况也发生在右键上
编辑
结果是:
如果我在代码末尾添加这一行,我将面临更多的问题
self.navigationItem.rightBarButtonItem = backBarButtonItem;
如果同时显示右按钮,则仅显示右按钮,而不显示左按钮。意思是我不能同时设置两个按钮。隐藏真正的导航栏,然后添加
UIView
,它将充当导航栏
。并在其上添加两个按钮。视图的框架应为(0,0,64,屏幕宽度)
。这对您来说会更容易,因为根据您的屏幕截图,您不需要此屏幕的后退按钮,因此您应该隐藏此屏幕的导航栏
,这比定制真正的导航栏更容易 隐藏真正的导航栏,并添加UIView
,它将充当导航栏
。并在其上添加两个按钮。视图的框架应为(0,0,64,屏幕宽度)
。这对您来说会更容易,因为根据您的屏幕截图,您不需要此屏幕的后退按钮,因此您应该隐藏此屏幕的导航栏
,这比定制真正的导航栏更容易 请删除导航栏。显示左右两侧带有按钮的自定义视图
-(void) viewWillAppear {
[super viewWillAppear];
self.navigationcontroller.navigationbar.setHidden = YES;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width
UIView *myNavView = [UIView alloc] initWithFrame:CGRectMake(0, 0, 64, screenWidth)];
[[self view] addSubview: myNavView];
}
请删除导航栏。显示左右两侧带有按钮的自定义视图
-(void) viewWillAppear {
[super viewWillAppear];
self.navigationcontroller.navigationbar.setHidden = YES;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width
UIView *myNavView = [UIView alloc] initWithFrame:CGRectMake(0, 0, 64, screenWidth)];
[[self view] addSubview: myNavView];
}
请添加实际结果的屏幕截图,以便更好地理解问题。请发布您所获得的图像,以便其他人可以对其进行调整。好的,我已删除该代码以供其他尝试,给我2分钟,我会上传有问题的图片。我添加了截图。请添加实际结果的截图,以便更好地理解问题。请发布您获得的图片,以便其他人可以对其进行调整。好的,我已删除该代码,以便其他人尝试,给我2分钟,我会上传有问题的图片。我已经添加了截图。我可以有更多的细节吗?导航控制器不允许我在导航控制器中添加任何内容。隐藏导航栏,使用我在回答中提到的框架从
viewdiload
添加新的uiview,并向该视图添加两个按钮。不是这样!同样的事情你也可以从interfacebuilder做!这意味着我必须在我所有的VC中添加它?类似这样的东西:-(void)viewwillbeen[super viewwillbeen];CGRect screenRect=[[UIScreen mainScreen]边界];CGFloat screenWidth=screenRect.size.width UIView*myNavView=[UIView alloc]initWithFrame:CGRectMake(0,0,64,screenWidth)];[[self view]addSubview:myNavView]代码>然后将按钮添加到其中。我同意Lion的观点,这是更好的方法。如果你愿意的话,你就可以把所有你想要的东西都制作成动画。我可以有更多的细节吗?导航控制器不允许我在导航控制器中添加任何内容。隐藏导航栏,使用我在回答中提到的框架从viewdiload
添加新的uiview,并向该视图添加两个按钮。不是这样!同样的事情你也可以从interfacebuilder做!这意味着我必须在我所有的VC中添加它?类似这样的东西:-(void)viewwillbeen[super viewwillbeen];CGRect screenRect=[[UIScreen mainScreen]边界];CGFloat screenWidth=screenRect.size.width UIView*myNavView=[UIView alloc]initWithFrame:CGRectMake(0,0,64,screenWidth)];[[self view]addSubview:myNavView]代码>然后将按钮添加到其中。我同意Lion的观点,这是更好的方法。然后,如果您愿意,您将能够设置所有您想要的动画。