如何自定义UINavigationController?

时间:2013-08-14 07:19:48

标签: ios ipad uinavigationcontroller uinavigationbar

我的设计目标如下图所示: enter image description here

问题是,UIButton valign不能位于中心位置,UIButton始终相对于UINavigationController,如下所示: enter image description here

如何使UIButton在背景图像高度的中心位置而不是UINavigationController高度?

5 个答案:

答案 0 :(得分:1)

 self.btnBack = [UIButton buttonWithType:UIButtonTypeCustom];
[self.btnBack setImage:[UIImage imageNamed:@"back_active.png"] forState:UIControlStateNormal];
[self.btnBack addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
self.btnBack.frame = CGRectMake(5, 9, 50, 30);
[self.navigationController.navigationBar addSubview:self.btnBack];

同时检查此link

更新:用于后退按钮

-(void)back
{

[self.btnBack removeFromSuperview];
[self.navigationController popViewControllerAnimated animated:NO];
}

答案 1 :(得分:0)

首先创建自定义按钮,然后在导航控制器中添加子视图: -

UIButton * headerButton = [UIButton buttonWithType:UIButtonTypeCustom];  
[headerButton addTarget:self action:@selector(headerButton1Action:) forControlEvents:UIControlEventTouchUpInside];
headerButton.frame = CGRectMake(95, 1, 30,38 );
[headerButton setImage:[UIImage imageNamed:@"header-icon"] forState:UIControlStateNormal];
[headerButton setImage:[UIImage imageNamed:@"header-icon-pressed"] forState:UIControlStateSelected];

[self.navigationController.navigationBar addSubview:headerButton];

我希望这会对你有所帮助。 快乐的编码...

答案 2 :(得分:0)

这是一个很好的快速解决方案

myButton.titleLabel.font = [UIFont fontWithName:@"FontName" size:20.0];   
myButton.contentEdgeInsets = UIEdgeInsetsMake(3.0, 0.0, 0.0, 0.0);

并隐藏导航栏

[self.navigationController setNavigationBarHidden:YES];

然后显示您的自定义视图

答案 3 :(得分:0)

有诀窍,

您可以使用[self.navigationController setNavigationBarHidden:YES];

隐藏navigationController

并根据需要在顶部显示自定义视图。

答案 4 :(得分:0)

由于导航栏高度而面临的问题。现在有两种方法。您可以创建导航栏的类别并覆盖 - (CGRect)sizethatFits方法,如下所示: - (CGSize)sizeThatFits:(CGSize)size {     CGSize newSize = CGSizeMake(320,100);     return newSize; }

或者您可以隐藏导航栏,如: [self.navigationController setNavigationBarHidden:YES]; 并放置一个标题视图并处理它。

做你想做的事情..