如何自定义 UINavigationController?
Posted
技术标签:
【中文标题】如何自定义 UINavigationController?【英文标题】:How to Custom UINavigationController? 【发布时间】:2013-08-14 07:19:48 【问题描述】:我有这样的设计目标:
问题是,UIButton
valign
不能在中心位置,UIButton
总是相对于UINavigationController
像这样:
如何使UIButton
在背景图像中心的高度不是UINavigationController
高度?
【问题讨论】:
请更新您的问题以正确显示图像而不是描述。 显示您用于该按钮的代码 您是将此按钮用作条形按钮还是添加为子视图?? 您想在导航栏或视图上添加按钮? 【参考方案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];
【讨论】:
【参考方案2】:首先创建自定义按钮,然后在导航控制器中添加子视图:-
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];
我希望这会对你有所帮助。 快乐编码...
【讨论】:
【参考方案3】:这是一个很好的快速解决方案
myButton.titleLabel.font = [UIFont fontWithName:@"FontName" size:20.0];
myButton.contentEdgeInsets = UIEdgeInsetsMake(3.0, 0.0, 0.0, 0.0);
并隐藏您的导航栏
[self.navigationController setNavigationBarHidden:YES];
然后显示您的自定义视图
【讨论】:
我试试你的代码,它的工作我的 UIButton 位置现在是正确的。但我遇到了另一个问题,我的状态位置与 UIButton 位置不同。如何解决这个问题,谢谢。【参考方案4】:有诀窍,
您可以使用 [self.navigationController setNavigationBarHidden:YES];
隐藏 navigationController
并根据需要在顶部显示自定义视图。
【讨论】:
【参考方案5】:由于导航栏高度,您面临的问题。现在有两种方法。您可以为导航栏创建一个类别并覆盖 -(CGRect)sizethatFits 方法,如下所示: - (CGSize)sizeThatFits:(CGSize)size CGSize newSize = CGSizeMake(320,100); 返回新尺寸;
或者您可以隐藏导航栏,例如: [self.navigationController setNavigationBarHidden:YES]; 并放置一个标题视图并处理它。
做你想做的事..
【讨论】:
以上是关于如何自定义 UINavigationController?的主要内容,如果未能解决你的问题,请参考以下文章