Отдельные раскадровки для iPhone 5 и iPhone 4S

Возможный дубликат:
Как разработать или перенести приложения для разрешения экрана iPhone 5?

Как загрузить отдельные раскадровки для iPhone 5 и iPhone 4S/4/3G??

Я хочу сделать это, потому что размер экрана для iPhone 5 отличается.


person iSaalis    schedule 05.10.2012    source источник
comment
Небольшой поиск открыл бы много информации. Попробуйте stackoverflow.com/a/12397309/300292.   -  person rsswtmr    schedule 05.10.2012
comment
На самом деле, я видел эти решения, режим почтового ящика или редизайн с использованием кода, основанного на размере экрана. Но я хочу разработать отдельные раскадровки для экранов высотой 1136 и 960 пикселей. У нас могут быть отдельные раскадровки для iPad и iPhone с помощью pList. Но я хочу знать, можно ли загружать разные раскадровки для iPhone 5 и iPhone 4S.... ???   -  person iSaalis    schedule 05.10.2012
comment
А что будет, когда следующий айфон будет 1280x1024? Или появится мини-айпад аналогичного размера? Я хочу сказать, что вам нужно избавиться от привычки проектировать для каждого форм-фактора и начать использовать новые инструменты ограничения компоновки. Представьте, что вам нужно изменить дизайн приложения для ПК для каждого возможного разрешения экрана...   -  person rsswtmr    schedule 05.10.2012
comment
rsswtmr, ваш аргумент верен.... но я разрабатываю для iOS 5.1 в качестве цели развертывания... Поэтому я не могу использовать инструменты ограничения макета для iOS 6 SDK... Я знаю, что отдельный подход к раскадровке не будет лучший, но все же хотелось бы знать, возможно ли это??   -  person iSaalis    schedule 05.10.2012


Ответы (1)


В вашем делегате приложения вам нужно будет добавить/заменить следующий код в - (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.

ОБНОВЛЕНИЕ (ОТВЕТ ДЛЯ КОНКРЕТНОЙ РАССКАЗКИ):

Чтобы загрузить разные раскадровки при запуске, используйте этот код:

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

    if (iOSDeviceScreenSize.height == 480)
    {   
        // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone35
        UIStoryboard *iPhone35Storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone35" bundle:nil];

        // Instantiate the initial view controller object from the storyboard
        UIViewController *initialViewController = [iPhone35Storyboard instantiateInitialViewController];

        // Instantiate a UIWindow object and initialize it with the screen size of the iOS device
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        // Set the initial view controller to be the root view controller of the window object
        self.window.rootViewController  = initialViewController;

        // Set the window object to be the key window and show it
        [self.window makeKeyAndVisible];
    }

    if (iOSDeviceScreenSize.height == 568)
    {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen
        // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
        UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone4" bundle:nil];

        UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.rootViewController  = initialViewController;
        [self.window makeKeyAndVisible];
    }
person Bijoy Thangaraj    schedule 05.10.2012
comment
это не отвечает на мой вопрос.... Как одно и то же приложение может загружать отдельные раскадровки для iPhone 5 и iPhone 4S/4/3G?? - person iSaalis; 05.10.2012
comment
@iSaalis, пожалуйста, проверьте мой обновленный ответ. - person Bijoy Thangaraj; 02.01.2013
comment
разве iphone 4 (s) screensize.height не должен быть установлен == 968? - person ipatch; 02.01.2013
comment
@ Крис Нет. Этого не должно быть. - person Bijoy Thangaraj; 02.01.2013
comment
Википедия @BijoyThangaraj говорит, что высота экрана iPhone 5 составляет 1136, высота экрана iPhone 4 — 968, а высота экрана iPhone 3 (G) (S) — 480, если я не ошибаюсь. - person ipatch; 02.01.2013
comment
@Chris Фактическая высота экрана составляет 960 пикселей, но [[UIScreen mainScreen] bounds].size.height возвращает 480 в iPhone 4S с коэффициентом масштабирования 2. - person Bijoy Thangaraj; 03.01.2013
comment
Не путайте с пикселями и точками - person Dima Deplov; 29.07.2013