2014-10-05 159 views
0

我試着去適應我的應用程序的iPhone 6自定義導航欄圖像6

一切都是之前的工作以及時設置的自定義背景圖片到我的導航欄:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbarbg.png"] forBarMetrics:UIBarMetricsDefault]; 

由於這張圖片是爲iphone 4/5製作的,寬度不夠。

你知道我可以爲iPhone6設置正確的圖像嗎?

我試圖命名我的圖像[email protected][email protected],但它不會改變任何東西。

有什麼想法?

更新: 我已經加入我用的是圖像:

enter image description here

+0

iPhone 6不使用'@ 3x'圖形,因爲像素密度與iPhone 5相同並且下降。只有iPhone 6 Plus纔會使用'@ 3x'圖像。我懷疑問題在於圖像的「伸展」? – dbart 2014-10-05 14:53:17

+0

感謝您的回答。不完全是,圖像正在重複。 – Vico 2014-10-05 14:54:56

+0

最好的解決方案是採用「可拉伸」圖像。在這種情況下,您可以爲所有屏幕尺寸使用單個圖像。你的導航欄圖像是什麼樣的?你能發佈一個屏幕截圖嗎? – dbart 2014-10-05 14:57:38

回答

4

你應該創建一個可調整大小的圖像,並將其設置爲backgroundImage。根據提供的圖像,您的左帽插圖是82.0f分。您可以根據需要調整以適應文本。

另外,不要忘記,@3x圖像僅在iPhone 6 Plus上使用,的iPhone 6

UIImage *backgroundImage  = [UIImage imageNamed:@"your-image-name"]; 
UIImage *resizableBackground = [backgroundImage resizableImageWithCapInsets:UIEdgeInsetsMake(0.0f, 82.0f, 0.0f, 0.0f)]; 
[self.navigationController.navigationBar setBackgroundImage:resizableBackground forBarMetrics:UIBarMetricsDefault]; 
+0

非常感謝! :-) – Vico 2014-10-06 08:27:18

5

願這也有幫助,它的做工精細(如果你的圖像或陰影不同的),你可以用這一個也不過不同的圖像,你必須設置爲每個設備的規模:

NSLog(@"width is :%f",[[UIScreen mainScreen] bounds].size.width); 

UIImage *navBarImage =nil; 
if ([[UIScreen mainScreen] bounds].size.width==375.0f) { 
    navBarImage = [[UIImage imageNamed: @"[email protected]"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
} 
else if ([[UIScreen mainScreen] bounds].size.width==414.0f) { 
    navBarImage = [[UIImage imageNamed: @"[email protected]"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
} 
else{ 
    navBarImage = [[UIImage imageNamed: @"header-topbg"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

} 

[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; 

你可以看到下面的圖片爲iphone6 +: enter image description here 謝謝。