我有一个视图控制器,根据观看它的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;
}
}
我没有收到任何错误,但同时在任何设备上都没有显示任何图片!谁能帮我?当然这应该是一个简单的问题?
我试图解读这个问题,但我没有在哪里。我正在使用故事板,我确实打开了autolayout。这可能是问题吗?
感谢您花时间看一看!
答案 0 :(得分:1)
试试这个
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
所以从现在开始,你可以在标准的if / else语句中使用它:
if( IS_IPHONE_5 )
{}
else
{}
答案 1 :(得分:0)
对浮点数等价进行一些研究。高度的变化恰好等于960或1136很小(尽管它们可能是)。您应该检查>=
或<=
。
匹配960 pr 1136的可能性特别小,因为它们是@ 2x尺寸。框架的真实尺寸为480或568。
所以,尝试使用if (height > 481)
和简单的else
。