Проблема совместимости с iPhone-5

Я разработал приложение ios для ios 4.0. Это было приложение, основанное на навигации. Теперь я хочу, чтобы оно также поддерживало iPhone-5. Я думаю, что изменил xib после проверки версии устройства. Я столкнулся с проблемой. xib изменен, но его высота не изменилась. .Как это возможно, если кто-то еще сталкивается с этой проблемой, поделитесь со мной идеями. Спасибо.


person Mohit    schedule 29.11.2012    source источник
comment
Я заметил еще одну вещь: размер окна на обоих устройствах разный, так как я могу управлять тем, чтобы это приложение работало на обоих устройствах.   -  person Mohit    schedule 29.11.2012
comment
Вы пробовали использовать Autolayout? Посмотрите мой ответ...   -  person Bijoy Thangaraj    schedule 10.12.2012


Ответы (2)


Установите iOS 6 в качестве базового SDK и используйте функцию Auto Layout для создания экранов, которые можно масштабировать для всех типов экранов. Для этого вам понадобится Xcode 4.5.

Начните работу с Auto Layout здесь:
http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2
http://www.raywenderlich.com/20897/beginning-auto-layout-part-2-of-2

Если вы все еще хотите поддерживать iOS 4.0, создайте отдельные файлы .xib для разных размеров экрана и загружайте их соответствующим образом при запуске.

Чтобы загрузить различные файлы пера в зависимости от размера экрана, в вашем делегате приложения вам нужно будет добавить/заменить следующий код в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_4inch" bundle:nil];
} else {
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
}

где ViewController_4inch — это имя nib-файла, предназначенного для экрана iPhone 5.

person Bijoy Thangaraj    schedule 10.12.2012

В APP Делегат: -

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{



CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

//----------------HERE WE SETUP FOR IPHONE 4/4s/iPod----------------------

if(iOSDeviceScreenSize.height == 480){


   self.viewController = [[ViewController alloc]   initWithNibName:@"ViewController_4inch" bundle:nil];

    NSLog(@"iPhone 4: %f", iOSDeviceScreenSize.height);

}

//----------------HERE WE SETUP FOR IPHONE 5----------------------

if(iOSDeviceScreenSize.height == 568){

    self.viewController = [[ViewController alloc]   initWithNibName:@"ViewController_5inch" bundle:nil];
     NSLog(@"iPhone 5: %f", iOSDeviceScreenSize.height);

}

 return YES;
 }

Это работает !!!!!!

person ios_av    schedule 09.04.2013