为什么在iphone中运行应用程序时不会显示我的整个图像(Retina 4英寸)

时间:2013-09-12 11:19:41

标签: iphone background-image retina-display iphone-5

我将视图背景设置如下:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:
@"backgr.png"]];

当我在 iphone 4(Retina 3.5英寸)中运行它时工作正常。但是当我在 iphone 5(Retina 4英寸)图像中运行时没有正确设置或显示。图像看起来像4倍放大/ 爆炸了。

编辑

 I have two different images for iphone 4(640x960) and 5(640x1136).

 What is the problem here? Is it scaling problem or another problem?
 Please guide me on this.

3 个答案:

答案 0 :(得分:1)

两个显示器的分辨率都不同,因此您需要放置条件,并相应地为iPhone 5(4英寸视网膜)显示器设置更高分辨率的新图像。

和你可以像

那样的条件
if ((int)[[UIScreen mainScreen] bounds].size.height == 568)
{
    // This is iPhone 5 screen
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgr_iPhone5.png"]];
} else {
    // This is iPhone 4 screen
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgr.png"]];
}

答案 1 :(得分:1)

这可以很方便:

#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && 
[UIScreen mainScreen].scale == 2.f &&
 UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

- (void)viewDidLoad
{
    [super viewDidLoad];

        if(IS_PHONEPOD5())
        {
                self.imageView.image = [UIImage imageNamed:@"image-568h@2x"];
        }
        else
        {
                self.imageView.image = [UIImage imageNamed:@"image"];
        }
}

答案 2 :(得分:0)

您需要为iPhone 4和iPhone 5使用两个不同的图像。因为两个设备具有不同的分辨率。你需要这样检查。

if ([UIScreen mainScreen].bounds.size.height == 568)
    {
        // ------- iPhone 5
    }
    else
    {
        // ---------- iPhone 4
    }