2013-12-08 2 views
0

Этот код здесь sangony работа для меня очень хорошо, но только на iPhoneфоновое изображение слишком большое в окно/вид - Part 2

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 

CGRect viewFrame = CGRectMake(0, 0, 320, 568); 


UIImage *background = [UIImage imageNamed:@"BG.png"]; 

UIImage *scaledImage = [UIImage imageWithCGImage:[background CGImage] 
              scale:(background.scale * 2.0) 
            orientation:(background.imageOrientation)]; 

UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:viewFrame]; 

[[self window] addSubview:backgroundView]; 
[[self window] sendSubviewToBack:backgroundView]; 

self.window.backgroundColor = [UIColor clearColor]; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

Теперь, как я могу сделать ту же самую идею, ориентированные как iPhone'ов и IPADS?

Оригинальный пост можно найти Here:

ответ

0

Хотя я не эксперт UI, одна вещь, которая свойственна является:

CGRect viewFrame = CGRectMake(0, 0, 320, 568); 

Почему размер viewFrame жёстко? Разве это не зависит от экрана, на который вы нацеливаетесь? Он должен быть пропорционален размеру экрана.

А также, фоновое изображение должно отличаться от размера экрана, а разрешение отличается от iPad и iPhone.

Для этого вы можете использовать размер экрана для выбора соответствующего изображения в соответствии с размером экрана или масштабировать изображение.

0
CGRect viewFrame = CGRectMake(0, 0, 320, 568); 

Я уверен, что вы можете избавиться от этой строки кода полностью:

UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:viewFrame]; 

Теперь измените viewFrame на self.window.frame.

В вашем примере вы жестко закодировали фрейм, поэтому независимо от того, что это устройство, он всегда будет такого размера.

+0

Спасибо @The Tin Man, я пытался сделать это, но не удалось! действительно ценю это, первый раз постер, долго читатель – deebost

0

Получить за пределы окна и установить рамку

UIImageView *backgroundView = [[[UIImageView alloc] initWithImage:scaledImage] initWithFrame:self.window.bounds]; 
Смежные вопросы