私は持っている:
[一連の 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 すると、Retina デバイスがランドスケープ モードの場合、高さは 1024、幅は 768 になります。表示される画像は、縦長の画像を回転させたものです。デバイスを横向きにすると、画像が画面全体にきれいに表示されますが、背景には水平方向に圧縮された画像が表示されます。
高さと幅を正しく取得するには、何か違うことをする必要がありますか? 横向きのデバイスの場合、高さは 768、幅は 1024 になると思います。