2011-01-20 9 views
2

나는 나의 클라이언트가 자신의 스크린 샷을 조롱 방법을 몰라,하지만은이 같은 탐색 바 투톤 금속 모양의 종류를 가지고 이미지와 함께 결국 :iPhone 앱의 탐색 바가 금속으로 보이게하려면 어떻게해야합니까?

Metallic.

그러나 나는 응용 프로그램을 구축,이 같은 흰색으로 점차 내 색조 색상에서 페이드 끝 :

Not so metallic.

의 문제점은, 클라이언트 정말 방법과 같은 그들의 모형에서 찾습니다. 내가 무엇을 할 수 있을지?

답변

5

서브 클래스 UINavigationBar. 하위 클래스에서 drawRect:을 재정 의하여 원하는 것을 맞춤형으로 그립니다. UINavigationController의 인스턴스에서 탐색 바가 하위 클래스의 인스턴스인지 확인합니다.

프로그래밍 네비게이션 컨트롤러를 인스턴스화하는 경우, 당신은이 작업을 수행하지 못할 수 있습니다 - 당신은 모든 인스턴스 그리기 재정의 UINavigationBar에 카테고리를 추가에 의존 할 수 있습니다 :

@implementation UINavigationBar (CustomDrawing) 
- (void)drawRect: (CGRect)rect { 
    // ... 
} 
@end 

그것은이다 방법 swizzling을 사용하여 UINavigationBar의 기본 동작을 재정의 할 수도 있지만 메서드 스위 즐링을 설명하는 것은이 질문의 범위를 벗어납니다.

+0

:

는 여기 SNIPPIT입니다. 매우 감사합니다. –

1

@ Jonathan의 답변 Ray Wenderlich에는 나만의 그라디언트를 만드는 데 유용한 자습서가 있습니다. 우리가 갔어요 무엇을 그

void drawGlossAndGradient(CGContextRef context, CGRect rect, CGColorRef startColor, 
    CGColorRef endColor) { 

    drawLinearGradient(context, rect, startColor, endColor); 

    CGColorRef glossColor1 = [UIColor colorWithRed:1.0 green:1.0 
     blue:1.0 alpha:0.35].CGColor; 
    CGColorRef glossColor2 = [UIColor colorWithRed:1.0 green:1.0 
     blue:1.0 alpha:0.1].CGColor; 

    CGRect topHalf = CGRectMake(rect.origin.x, rect.origin.y, 
     rect.size.width, rect.size.height/2); 

    drawLinearGradient(context, topHalf, glossColor1, glossColor2); 

} 
+0

레이 Wenderlich 에이스입니다. –

+0

@ 토미, 그렇습니다. 내게 너무. 나는 내가 배울 필요가있는 모든 것을 위해 그의 사이트에 간다. 그의 책이 꺼질 때까지 기다릴 수 없다. –

관련 문제