如何在iOS中复制启动图像

时间:2014-10-30 14:47:58

标签: ios objective-c

我的主应用程序必须在webview中进行一些工作,所以我希望在这项工作进行时保持启动图像更长时间。为此,我创建了一个带有UIImageView的控制器,我正在其中加载默认图像:

self.imageView.image = [UIImage imageNamed:"Default"];

// These all tend to fill the screen, but end up distorting the image
//self.imageView.contentMode = UIViewContentModeScaleAspectFill;
//self.imageView.contentMode = UIViewContentModeScaleAspectFit;
//self.imageView.contentMode = UIViewContentModeScaleToFill;

// This keeps the aspect the same, but doesn't fill the screen
self.imageView.contentMode = UIViewContentModeCenter; 

这主要是有效的,除非真正的发射图像消失并被我的替换,我有两个白条 - 一个在顶部,一个在底部 - 图像没有完全填满。我已经尝试将contentMode设置为各种填充/拟合,即使这具有填充整个屏幕所需的效果,它也会略微拉伸和扭曲图像。

所以我想知道的是 - 启动图像做了什么,我没做什么?如何精确复制显示,以便用户无法判断它是不同的图像?

1 个答案:

答案 0 :(得分:1)

就像你的项目一样,我使用了一个启动图像,然后在第一个叫做UIVmageController的UIVmageController里面有一个UIImageView。图像分辨率必须与屏幕的定义完全相同。 UIViewController中的代码是这样的:

CGRect fullFrame = [[UIScreen mainScreen] bounds];

// Img Background
UIImageView *background;
if (fullFrame.size.height <= 480) {
    background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image-480h.png"]];
}
else if (fullFrame.size.height <= 568) {
    background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image-568h.png"]];
}
else if (fullFrame.size.height <= 668) {
    background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image-668h.png"]];
}
else {
    background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image-736h.png"]];
}
background = CGRectMake(0, 0, frame.size.width, fullFrame.size.height);
myMainView = [[UIView alloc] initWithFrame:frame];
[myMainView addSubview:background];
self.view = myMainView;

我根据iPhone 4,5,6和6 plus检查不同的屏幕尺寸。