2011-01-04 6 views
2

나는 사용자 정의 uinavigation 줄이 길을했습니다사용자 정의 uinavigatonbar 예외

@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 

지금 내가 드있는 navigationController로의 특정의 ViewController을로드 할 때 일반 uinavigation 표시 줄을 표시하는 예외를 추가하고 싶습니다.

어떻게 예외를 코딩 할 수 있습니까?

답변

2

나는 UINavigationBar에 카테고리로 가능하다고 생각하지 않습니다. 나는 서브 클래스를 제안 는 까다로운 것은 당신이 모든 UIKit에 의해 처리있어하는 UINavigationBar을 직접 만들 결코이다 .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 

CustomNavigationBar

말한다. 일부 막대의 모양 만 변경하려면 런타임에 클래스를 수동으로 변경해야합니다.

#import <objc/runtime.h> 

그리고 (예를 들어있는 viewDidLoad에서)보기 컨트롤러에서 가져 오기,

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

놀라운 솔루션을 추가 할 수 있습니다. 매력처럼 일했습니다. 고마워요! – Jorge

관련 문제