2012-05-10 2 views
0

iOS 4.3에서 투명하게 렌더링되는 기본 상태 표시 줄을 바꿀 때 사용하는 PNG 이미지의 투명 비트를 가져 오는 데 어려움이 있습니다. 지금 그들은 검은 색으로 올라오고 있습니다. 여기상태 표시 줄의 iOS 4.3 투명 PNG가 투명하지 않습니다.

@implementation UINavigationBar (BackgroundImage) 
    - (void)drawRect:(CGRect)rect 
    { 
     UIImage *image = nil; 

     switch(self.tag) 
     { 
      case HeaderBG_Logo: 
       image = [UIImage imageNamed: @"top_bar_logo.png"]; 
       break; 
      case HeaderBG_Plain: 
       image = [UIImage imageNamed: @"top_bar.png"]; 
       break; 
     } 

     if(image != nil) 
     { 
      [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
     } 

    } 
@end 

이미지가있다 (ios4.3 및 iOS5를의 시뮬레이터에서 실행되는 동일한 응용 프로그램의 측면 비교에 의한 측면이 : 여기

내가 내 이미지를 그릴 사용하고 코드입니다 그림자를 아래쪽 테두리로 사용) : screenshot

제쳐두고 4.3 배경 이미지는 5.0과 마찬가지로 키가 크게 렌더링되지 않습니다.

UINavigationBar을 불투명으로 설정하고 배경색을 clearColor으로 설정해 보았습니다. 그 중 아무 것도 작동하지 않았습니다. :(

사람이 도와 줄 수

+0

높이가 같지 않은 문제는 iOS 4에서 'UINavigationBar'의 44 높이에서 이미지를 생성한다는 사실과 관련이 있습니다. iOS 5에서는 막대의 높이 바깥으로 그립니다. – rckoenes

+0

그 작은 수수께끼를 해결해 주셔서 감사합니다. – boz

답변

0

그냥 힌트에서 iOS 5를 위해 당신은 배경 이미지를 설정하는 새로운 appreance 속성을 사용할 수 있습니다?

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"top_bar.png"] forBarMetrics:UIBarMetricsDefault]; 

이 모든 UINavigationBar의 이미지를 설정합니다을 응용 프로그램에서

+0

고마워,하지만 이미 iOS 5 용으로 사용하고있다. 그냥 iOS 4.3으로 고민하고있다. ( – boz

+0

아, 미안하지만 나는 그 반대를 깨달았다 :) – Mat

0

상태 표시 줄이나 탐색 모음이 걱정된다면 이해할 수 없습니다. 질문에 따르면 탐색에 더 관심이있는 것 같습니다. 여기에 맞는 샘플 코드가 있습니다.iOS5 및 iOS4의 배경 이미지를 추가합니다. 그것은 투명 png와 함께 작동합니다.

다만 당신의 ViewController의에는 loadView 방법이 추가 :

#define kBackgroundImageTag 42 

UINavigationBar *theNavigationBar = self.navigationController.navigationBar; 
UIImage *myBackgroundImage = [UIImage imageNamed:@"myImage.png"]; 

if([theNavigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) //iOS5 stuff 
{ 
    [theNavigationBar setBackgroundImage:myBackgroundImage forBarMetrics: UIBarMetricsDefault]; 

} 
else if(![theNavigationBar viewWithTag:kBackgroundImageTag]) //iOS 4 stuff 
{ 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:myBackgroundImage]; 
    imageView.tag = kBackgroundImageTag; 
    [theNavigationBar insertSubview:imageView atIndex:0]; 
} 

는 희망이 도움이!

+0

감사합니다. 실제로 실제로 다른 경로를 추가하여 대신 'UINavgiationBar'의 그림자 – boz

관련 문제