iPhone SDK: как учесть различия в макете пользовательского интерфейса, iPhone против iPad? - PullRequest
0 голосов
/ 04 марта 2011

Если у меня есть универсальное приложение (работает как на iPhone, так и на iPad), как я могу учесть различия в макете пользовательского интерфейса в коде, если пользовательский интерфейс отличается между устройствами?

Если я использую XIB, я могу просто загрузить другой XIB в зависимости от устройства и использовать один и тот же код.Правильно?

Если я создаю свой пользовательский интерфейс программным путем, как это сделать?Есть ли лучший способ, чем если бы / пропустить мой код и посмотреть на тип устройства?Я понимаю, что это выполнимо таким образом, это просто не кажется очень элегантным.

if (isiPhone)
{        
    UIView *myCommonView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, 50.0)];
    myCommonView.backgroundColor = [UIColor colorWithPatternImage:iPhoneSpecificImage];
    // bunch of other conditional code
} 
else
{
    UIView *myCommonView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 250.0, 150.0)];
    myCommonView.backgroundColor = [UIColor colorWithPatternImage:iPadSpecificImage];
    // bunch of other conditional code
}

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Гораздо лучшая альтернатива использованию множества операторов if / else - иметь несколько делегатов приложения. Самый простой способ сделать это - создать AppDelegate_iPhone & AppDelegate_iPad и, соответственно, связать их (в IB) с различными XIB, которые загружаются при запуске. Теперь у вас есть возможность программно добавлять различные элементы к каждому делегату.

Это также может привести к проблеме, когда вы хотите разделить элементы пользовательского интерфейса между делегатами. В этом случае вы можете создавать общие представления, которые используются обоими делегатами (просто импортируйте контроллер представления в обоих случаях).

Код должен выглядеть примерно как this .

0 голосов
/ 04 марта 2011

К сожалению, программно, если / elsing является единственным способом сделать это.Но когда вы думаете об этом, это не так уж плохо.Apple позволяет создавать 2 разных приложения из одного кода для двух разных устройств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...