1

我有一个使用UITabBarand的应用程序UINavigationBar。我正在创建一个UIImageView包含我的背景图像,然后将其添加UIImageView到我self.view的子视图中。这会导致背景垂直“挤压”。背景图像直到 NavBar 底部才开始,然后在 TabBar 后面向下运行。

这是我用来添加背景的代码:

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

任何关于如何保持背景实际大小的想法将不胜感激。

4

2 回答 2

2

首先,您不会有 480 磅的高度可用于UINavigationBar任何小于 iPhone/iPod 5 的礼物。您应该使用它self.view.frame.size.height来获得实际尺寸。实际上,您应该将框架设置为视图的边界。

[backgroundView setFrame:self.view.bounds];

其次,您应该设置contentMode.UIImageView

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

那应该可以解决您的问题。

于 2012-10-19T05:13:53.700 回答
0

我不太确定你在问什么。是的,任何属于标签栏控制器或导航控制器的视图都将调整大小以适应剩余的屏幕空间,但在考虑其他 UI 元素占用的空间后,您确切知道图像视图将剩余多少空间:

状态栏:320 x 20(纵向)、480 x 20(横向) 导航栏:320 x 44(纵向)、480 x 34(横向) 标签栏:320 x 49(纵向)、480 x 49(横向)

所以基本上,你的图像视图有以下可用空间:

纵向:320 x 367 空间:480 x 217

设计您的 Default.png 时要牢记这些尺寸。老实说,将您的第一个屏幕与 Default.png 匹配的最简单方法是简单地截取 iOS 模拟器的屏幕截图。

于 2012-10-19T05:55:50.970 回答