2014-09-26 6 views
15

iOS 8에서는 iPhone 및 iPad 크기의 개념이 세로 및 가로 방향과 함께 변경되어 탐색 막대 배경 이미지 설정이 동일하게 작동하지 않습니다. 현재 내가 다음 코드를 사용하고 있습니다 : 내 응용 프로그램을 시작할 때iOS 8 NavigationBar BackgroundImage

UIImage *NavigationPortraitBackground = [[UIImage imageNamed:@"nav-image-portrait"] 
             resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

UIImage *NavigationLandscapeBackground = [[UIImage imageNamed:@"nav-image-landscape"] 
              resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

[[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setBackgroundImage:NavigationLandscapeBackground forBarMetrics:UIBarMetricsCompact]; 

막대 메트릭 부분이 단순히 아이폰 6 6 개 플러스에 수평 때 바 이미지를 반복 아이폰 OS 8의로 사용되지 않습니다. 이미지 조각을 살펴 봤지만 해결책이 없다고 생각합니다. landscape

+0

@ Chris가 해결 되었습니까? –

답변

69

의 폭이다. resizableModeWithCapInsets : resizingMode : 메서드를 사용하고 resizingMode를 UIImageResizingModeStretch로 설정해야합니다. 그렇지 않으면 이미지가 여전히 탐색 모음에 바둑판 식으로 배열됩니다.

오브젝티브 C :

[[UIImage imageNamed:@"nav-image-portrait"] 
             resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch]; 

스위프트 3/4 :

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "image")!.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default) 
+0

완벽 다른 모든 솔루션에서 이미지가 반복되었습니다. 너는 내 하루를 구했다. – nidhin

4
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navbarimg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)] forBarMetrics:UIBarMetricsDefault]; 

사용

portrait이 소형 화상 (40)을 사용 (40*navigarbarheight) works.And 상기 코드 제가

솔루션을 발견 화상

+0

죄송합니다. 이미 캡슐 크기를 조절할 수있는 이미지를 사용하고 있으며 작동하지 않는 것으로 보이는 코드를 업데이트했습니다. – Chris

+0

그래,이 작동하지 않습니다. 이미지는 여전히 바둑판 식으로 배열되어 있습니다. – HughHughTeotl

0

이 더 PRECIS 모든 화면 크기에 맞게 정확한의 샘플 코드이다. 도움이 될 것입니다

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"header"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, screenWidth-50, 50)] forBarMetrics:UIBarMetricsDefault]; 
관련 문제