2012-12-17 107 views
4

我想在我的標籤欄上設置自定義背景圖片。我有名爲「tabbarBack.png」的圖片,大小爲640x92。在我的代碼中,我將它設置爲這樣。自定義標籤欄背景圖片太大

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]]; 

當我在設備上測試它時,tabbar比它應該大兩倍? 有什麼幫助嗎?

親切的問候

+4

將圖像重命名爲**[email protected]**。這被稱爲**像素倍增**視網膜顯示 – NSAddict

回答

1

NSAddict的評論:重命名你的圖像[email protected]。這稱爲視網膜顯示器的像素倍增。

如果沒有@ 2x iOS不知道它應該應用一個縮放因子,它將按原樣使用,儘管它應該減半。

那麼一劈爲:

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"[email protected]"]]; 

在現實中應該有

所以你只說

[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"tabbarBack.png"]]; 
+0

當我這樣做。標籤欄變得更大。 – Steaphann

+0

這對我有效!謝謝 ! – Steaphann

+0

它現在不工作了,因爲現在連蘋果都是用於多分辨率和自動佈局的...... –

5

嘗試這種波紋管兩行

self.tabBarController.tabBar.autoresizesSubviews = NO; 
self.tabBarController.tabBar.clipsToBounds = YES; 
5

調整您的圖像可能會導致丟失,因爲基於它的像素分辨率。 而不是使用setBackgroundImage(它不會允許您調整圖像大小)和更改Xcode以外的圖像,爲什麼不插入背景圖像作爲標籤欄的子視圖?通過這種方式,您可以在XCode中調整圖像的框架大小,並保持圖像文件不變!

/* TAB BACKGROUND IMAGE */ 
UIImageView *tabBackground = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 49)]; 
tabBackground.image = [UIImage imageNamed:@"BackgroundImage.png"]; 
tabBackground.contentMode = UIViewContentModeScaleAspectFill; 
[self.tabBar insertSubview:tabBackground atIndex:0]; 

默認標籤尺寸爲320x49 - 調整initWithFrame:方法CGRectMake以上,如果你的標籤欄的尺寸是定製。最後,如果您將其他圖像添加爲標籤欄的子視圖,請確保在添加背景圖像之前添加這些圖像。

1

檢查,如果你有這樣一行:

[[UITabBar appearance] setShadowImage:image]; 

您必須將其刪除或設爲零。