Cyr*_*ril 31 iphone user-interface uinavigationcontroller navigationcontroller ios
我正在抓住Dribble并找到了附件设计.我想知道如何做这样的自定义导航栏.我的意思是如何创建一次导航栏并为每个视图控制器隐式重用它.
我正在考虑使用一种根视图控制器并继承其他视图控制器,但我不知道如何做到这一点.
任何想法或链接将是appreachated!
干杯.
西里尔

感谢iOS5,您现在可以自定义UINavigationBar的外观,而无需子类化或创建类别.
以下代码块(将其放在applicationDidFinishLoading:方法中)将整个应用程序的UINavigationBar更改为您提供的任何图像.
请注意,这仅适用于iOS5
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav bar.png"] forBarMetrics:UIBarMetricsDefault];
但是,您还可以使用viewDidLoad中的以下代码,根据您所在的视图控制器更改单个UINavigationBar的外观.
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav bar.png"] forBarMetrics:UIBarMetricsDefault];
由于iOS5,上面的代码仅讨论了自定义UINavigationBar外观的新方法.但是,它没有讨论按钮的实现方式.
但是,添加按钮完全是一个不同的游戏.为此,我建议继承子类UINavigationBar,然后通过它添加需要的按钮.你甚至可能只使用标准UINavigationBar但自定义的UIBarButtonItems逃避特定的视图.
例如:
UIView *rightButton = [[[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 30.0f, 30.0f)] autorelease];
[rightButton addSubview:[UIImage imageNamed:@"rightButtonImage.png"]];
UIBarButtonItem *rightButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:rightButton] autorelease];
[rightButtonItem setAction:@selector(rightButtonAction:)];
Run Code Online (Sandbox Code Playgroud)
我没有测试过该代码,因此它不是一个复制/粘贴解决方案,但它让您了解需要做些什么来完成"自定义"外观UIBarButtonItems.
祝好运!
在较旧的iOS版本中,您必须继承UINavigationBar,即:
@interface CustomNavigationBar : UINavigationBar
@end
@implementation CustomNavigationBar
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
self.opaque = YES;
self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"CustomBackground"]];
}
return self;
}
- (void)drawRect:(CGRect)rect {
// Skip standard bar drawing
}
@end
Run Code Online (Sandbox Code Playgroud)
要在视图控制器中使用自定义导航栏,应将标准类名更改为CustomNavigationBarXIB.
此外,您可以以编程方式设置自定义导航栏:
UIViewController *tempController = [[[UIViewController alloc] init] autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:tempController] autorelease];
NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:navigationController];
NSKeyedUnarchiver *unarchiver = [[[NSKeyedUnarchiver alloc] initForReadingWithData:archive] autorelease];
[unarchiver setClass:[CustomNavigationBar class] forClassName:@"UINavigationBar"];
UINavigationController *customNavigationController = [unarchiver decodeObjectForKey:@"root"];
UIViewController *contentController = [[[ContentViewController alloc] init] autorelease];
customNavigationController.viewControllers = [NSArray arrayWithObject:contentController];
Run Code Online (Sandbox Code Playgroud)
现在customNavigationController有了自定义导航栏.
您需要创建自己的UINavigationBar子类,并在需要导航控制器的地方使用。
在这个自定义类中,您将绘制背景、按钮、文本等。
实际上,仔细看看这个例子,它似乎是一个UIToolBar. 您可以为按钮分配导航方法,例如popViewController:等。对于“确认信息”和进度指示器,您可以使用标签和图像。对于右侧按钮来说,它只是一个图形。
当然,您提供的示例只是一个概念,而不是实际的应用程序。但只要有一些创造力,几个小时的编码和几个小时的图形设计,您就可以实现相同的界面。
| 归档时间: |
|
| 查看次数: |
20578 次 |
| 最近记录: |