1

我有一个视图控制器,我想根据 iPhone 的大小查看它的背景。

我尝试了以下代码:

- (void)viewDidLoad
{
[super viewDidLoad];

//Chainging the background for the different screen sizes. 


if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;

if(result.height == 960) {


    UIImage *image = [UIImage imageNamed:@"Background Iphone 4.png"];
    self.view.layer.contents = (id) image.CGImage;

}

if (result.height == 1136) {

    UIImage *image = [UIImage imageNamed:@"Background Iphone 5.png"];
    self.view.layer.contents = (id) image.CGImage;


}
}

我没有收到任何错误,但同时任何设备上都没有显示任何图像!谁能帮我?当然这应该是一个简单的问题?

我试图阅读问题,但我无处可去。我正在使用情节提要,并且确实打开了自动布局。这可能是问题吗?

感谢您花时间看一看!

4

2 回答 2

1

试试这个

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

因此,从现在开始,您可以在标准 if/else 语句中使用它:

if( IS_IPHONE_5 )
 {}
else
{}
于 2013-06-03T19:58:31.010 回答
0

对浮点数等价做一些研究。高度恰好等于 960 或 1136 的变化很小(尽管它们可能是)。您应该检查>=or<=代替。

匹配 960 pr 1136 的机会特别小,因为它们是 @2x 尺寸。帧的真实大小将是 480 或 568。

所以,尝试类似if (height > 481)和一个简单的else.

于 2013-06-03T19:53:56.793 回答