自定义uinavigatonbar例外

时间:2011-01-04 12:56:48

标签: iphone sdk uinavigationcontroller uinavigationbar

我用这种方式制作了一个自定义的uinavigation吧:

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect {
        UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
        [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

现在,当我将特定的viewcontroller加载到de navigationcontroller中时,我想添加异常以显示正常的uinavigation栏。

如何编写该例外代码?

1 个答案:

答案 0 :(得分:2)

我认为UINavigationBar上的类别不可能。 我会建议一个子类,比如CustomNavigationBar

·H

#import <UIKit/UIKit.h>

@interface CustomNavigationBar : UINavigationBar {
}
@end

的.m

#import "CustomNavigationBar.h"

@implementation CustomNavigationBar

- (void)drawRect:(CGRect)rect {
        UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
        [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

棘手的是你永远不会自己创建UINavigationBar,这一切都由UIKit处理。要仅更改某些条形的外观,您必须在运行时手动更改它们的类。

导入

#import <objc/runtime.h>

在视图控制器中(例如在viewDidLoad中),添加

object_setClass(self.navigationController.navigationBar, [CustomNavigationBar class]);