Конвертировать приложение iPhone в универсальный бинарный файл - PullRequest
1 голос
/ 18 мая 2011

У меня есть игра для iPhone, и я хочу превратить проект в универсальный. На самом деле, я уже сделал это путем корректировки цели. Проблема в том, что, например, кнопки UIB не меняются и не перемещаются.

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

На данный момент я делаю кнопки примерно так:

    [self setSettingsButton:[UIButton buttonWithType:UIButtonTypeCustom]];
    [settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
    [settingsButton setBackgroundImage:[UIImage imageNamed:@"SettingsButton.png"] forState:UIControlStateNormal];
    [settingsButton addTarget:self action:@selector(prefButtonClick) forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:settingsButton];

Ну да, очевидно, позиции и размеры являются абсолютными, когда они должны быть относительными, но мой вопрос: как сделать их относительными ?

Большое спасибо за вашу помощь!

Ответы [ 4 ]

2 голосов
/ 18 мая 2011

Я вижу два пути в этой ситуации:

1)

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    [settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
}
else {
    [settingsButton setFrame:CGRectMake(131, 145, 60, 250)]; // your iPad values
}

2)

CGRect bounds = self.view.bounds; // Here we get VC views frame size
CGRect buttonFrame = CGRectZero;
buttonsFrame.origin.x = bounds.size.width * 1.0/3.0;   // Yours calculations
buttonsFrame.origin.y = bounds.size.width * 4.0/5.0;   //
buttonsFrame.size.width = 240;                         //
buttonsFrame.size.height = 300;                        //
[settingsButton setFrame:buttonsFrame];

Надеюсь, это поможет!

1 голос
/ 18 мая 2011

Вы можете перейти на маршрут if / else, предложенный zapko, или вы можете установить главное окно для каждого устройства в настройках проекта.Это, по крайней мере, позволит вам изолировать код для устройства вне блока if / else, и, по моему опыту, его проще поддерживать.

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

0 голосов
/ 18 мая 2011
if ([UIDevice currentDevice].model == iPhone) {
    [settingsButton setFrame:CGRectMake(38, 121, 30, 180)];
}
else {
    [settingsButton setFrame:CGRectMake(131, 145, 60, 250)];
}

или

создайте универсальное приложение, которое вы должны создать как для страницы iphone, так и для страницы ipad.

0 голосов
/ 18 мая 2011

Вы должны сделать дизайн как для iphone, так и для ipad. Это лучший вариант. В противном случае вы должны проверить, является ли устройство iphone или ipad ([UIDevice currentDevice] .model), а затем вам нужно установить фрейм для обоих

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