iOS - iPad 背景图像被截短

Posted

技术标签:

【中文标题】iOS - iPad 背景图像被截短【英文标题】:iOS - iPad background image is getting cut off short 【发布时间】:2012-09-21 13:45:24 【问题描述】:

我有一个 iPad/iPhone 应用程序,iPhone 背景看起来不错,但是当我为 iPad 版本使用相同的图像时,它看起来好像在页面中间被截断了。

这是一个屏幕截图:

图片名为 building.png,我有 2 个版本,用于 iPad 的 building.png 和 building@2x。

我让图像在后台渲染的方式来自如下代码:

- (void)viewDidAppear:(BOOL)animated

    UIImage *image = [UIImage imageNamed:@"building"];
    self.view.backgroundColor = [UIColor colorWithPatternImage:image];

对我来说,解决这个图像在 iPad 视图上被截断的问题的最佳方法是什么?

谢谢!

【问题讨论】:

您在检查您使用的设备吗?然后加载适当的图像? @own gerig 实际上我不确定。我认为它可能没有加载 ipad 图像。但我不确定如何检查。 if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) //加载 iphone 图片 else //加载 ipad 图片 【参考方案1】:

我认为colorWithPatternImage 是您的图像被这样剪切的原因。为什么不创建一个 UIImageView 来包含您的图像,将其添加到您的视图中并调用 [self.view sendSubviewToBack:yourImageView]

编辑 这是你的代码 sn-p

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"building"]];
imgView.frame = self.view.bounds; // to set the frame to your view's size
[self.view addSubview:imgView];
[self.view sendSubviewToBack:imgView];

【讨论】:

嗯,很有趣。没有意识到它可能是 colorWithPatternImage ....您能否发布 sn-p 看起来像您建议的方式?我没有太多处理图像的经验,所以我有点困惑。谢谢! 我刚试过这个: UIImageView *imgView = [[UIImageView alloc] initWithImage:@"building"]; imgView.frame = self.view.bounds; // 将框架设置为视图的大小 [self.view addSubview:imgView]; [self.view sendSubviewToBack:imgView];这并不完全奏效。另外,在第一行我收到一个警告,说我的 NSString 和图像类型不兼容 您必须传递图像对象而不是字符串...我为您更改了代码 谢谢,但在第二行,它给出了有关 img.frame 引用的错误 - 你从哪里得到那个对象? 那行得通...是的,我认为这是一个错字,但我只是想确认一下.. 谢谢 :)【参考方案2】:

这对我有用 -

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];

imgView.frame = [[UIScreen mainScreen] bounds]; // 将框架设置为视图的大小

[self.view addSubview:imgView]; [self.view sendSubviewToBack:imgView];

【讨论】:

以上是关于iOS - iPad 背景图像被截短的主要内容,如果未能解决你的问题,请参考以下文章

横屏模式下 iOS 5 iPad 上的导航栏背景图像

适用于 iPhone 和 iPad 的 iOS 图像大小

在 iOS 8 中滚动时背景图像闪烁问题

背景图像在 Safari 和 iOS 中未显示全宽

iOS - 使用自动布局在旋转时更改背景图像

UITabbar ios的背景图