2012-10-19 54 views
1

我有一個應用程序正在使用UITabBarUINavigationBar。我創建了一個包含我的背景圖片的UIImageView,然後將UIImageView添加到我的self.view作爲子視圖。這導致背景垂直出現「擠壓」。背景圖像直到NavBar的底部纔開始,然後在TabBar後面運行。正在被導航欄擋住的iOS背景圖片

下面是我用添加背景代碼:

UIImageView* backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
    [backgroundView setFrame:CGRectMake(0, 0, 320, 480)]; 
    [self.view addSubview:backgroundView]; 

如何保持背景的實際大小,任何想法,將不勝感激。

+0

您是在iPhone 5故事板上創建的嗎? –

+0

容器視圖是否有屬性自動調整子視圖的大小?這可能是問題... –

回答

2

首先,你不會有480點的高度與UINavigationBar一起使用在任何小於iPhone/iPod 5的東西上。你應該使用self.view.frame.size.height來獲得實際尺寸。真的,你應該將框架設置爲視圖的邊界。

[backgroundView setFrame:self.view.bounds]; 

其次,你應該設置UIImageViewcontentMode財產。

[backgroundView setContentMode:UIViewContentModeScaleAspectFill]; //Set UIViewContentModeScaleAspectFit if you want to show the full image with the potential of a letterbox 

這應該可以解決您的問題。

0

我不太清楚你在問什麼。是的,任何屬於標籤欄控制器或導航控制器的視圖都將調整大小以適應剩餘的屏幕空間,但是在考慮其他UI元素佔用的空間之後,您確切知道圖像視圖留下了多少空間:

狀態欄:320 x 20(縱向),480 x 20(橫向)導航欄:320 x 44(縱向),480 x 34(橫向)標籤欄:320 x 49(縱向)

所以基本上,你有你的圖像視圖以下可用空間:

肖像:320×367解構:480 * 217

設計你的Default.png時考慮到這些尺寸。老實說,最簡單的方法是將您的第一個屏幕與Default.png進行匹配,只需簡單地截取iOS模擬器即可。