我有:
[一系列 if 语句将 backgroundImage 设置为 [UIImageNamed @"Background-Default-Landscape"]; 如果设备是 Retina 显示器,我是否可以假设设备会查找名为 Background-Default-Landscape@2x.png 的文件?]
UIImageView *backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
CGRect containerRect = CGRectZero;
containerRect.size = [backgroundImage size];
UIView *containerView = [[UIView alloc] initWithFrame:containerRect];
[containerView addSubview:backgroundView];
现在我的应用程序正在启动,一旦加载就会显示一个白色屏幕,而不是指定的背景(没有一个背景是纯白色的)。
在开始将东西放在背景上之前,我缺少什么来绘制背景,在代码的下方?
谢谢,
- 编辑 -
至于代码,我有:
- (void) renderScreen
{
int height = [[UIScreen mainScreen] bounds].size.height;
int width = [[UIScreen mainScreen] bounds].size.width;
UIImage *backgroundImage = nil;
if (height == 2048 || height == 2008 || height == 1024 || height == 1004 || height == 984)
{
backgroundImage = [UIImage imageNamed:@"Background-Default-Portrait"];
}
// Other such statements cut.
UIImageView *backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
CGRect containerRect = CGRectZero;
containerRect.size = [backgroundImage size];
UIView *containerView = [[UIView alloc] initWithFrame:containerRect];
[containerView addSubview:backgroundView];
[self.view addSubview:containerView];
然后下面是要在背景上绘制的语句。
当初始视图加载和旋转时调用此方法:
- (void)viewDidLoad
{
[super viewDidLoad];
[self renderScreen];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(renderScreen) name:UIDeviceOrientationDidChangeNotification object:nil];
}
行为是正确的初始屏幕加载,然后它变成白色,之后似乎没有任何有趣的事情发生。
- 编辑 -
在顶部,我有:
int height = [[UIScreen mainScreen] bounds].size.height;
int width = [[UIScreen mainScreen] bounds].size.width;
当我 NSLog 高度和宽度时,对于横向模式下的视网膜设备,我得到高度 1024 和宽度 768。显示的图像是纵向图像的旋转;如果我将设备放在一边,图像会整齐地填满整个屏幕,但背景会显示水平压缩的图像。
我应该做任何不同的事情来正确获得高度和宽度吗?我希望横向设备的高度为 768,宽度为 1024。