Вид iPhone не будет масштабироваться, чтобы соответствовать экрану iPad

У меня возникли некоторые проблемы с, как ни глупо, с наложением просмотра прогресса.

Я создал подкласс UIViewController с XIB с черным 50% непрозрачным фоном и индикатором активности в середине, я могу заставить его появляться и исчезать, когда мой удаленный класс данных пытается получить данные с удаленного сервера и т. д. .

Он отлично работает на iPhone, масштабируется и вращается.

Однако, когда я запускаю его в симуляторе iPad или на устройстве, квадрат заполняет только верхний левый угол экрана и не меняет размер, чтобы соответствовать дисплею.

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

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

progress = [[ProgressActivityViewController alloc] initWithNibName:@"ProgressActivityViewController" bundle:nil];
UIViewController *dlg = (UIViewController *)self.delegate;
[dlg.view addSubview:progress.view];

NB: прогресс настроен в файле .h как ProgressActivityViewController) Это класс удаленных служб данных, который добавляет и удаляет подпредставление, когда вы запускаете класс RemoteData, вы передаете его «я» в качестве делегата, чтобы он мог общаться с ним через протокол.

Я знаю, что для этого нужна какая-то другая проверка типа с помощью «isKindOfClass» и т. д., которую я могу добавить позже, но мне нужно, чтобы простое представление растянулось на весь экран.

Этот код работает и выводит вид на экран, но он просто не заполняет экран на iPad.

Источник примера индикатора активности, который я использовал, находится по этой ссылке: http://tapadoo.com/2009/iphone-how-to-do-full-screen-activity-status/


person JamesB    schedule 12.05.2011    source источник
comment
Вы проверили свои маски автоматического изменения размера в этом представлении? Все стойки и пружины включены?   -  person Christian    schedule 13.05.2011
comment
Да, в моем XIB у меня есть представление и элемент управления UIActivityIndicator внутри этого представления. Все настроены на масштабирование, чтобы соответствовать и автоматически изменять размеры подвидов, но если он загружается на iPad, он не будет масштабироваться на экране. Я решил проблему на временной основе, создав автономный xib для iPad и повторно используя некоторый код обнаружения устройства и просто загрузив его в initWithNibNamed:bundle: но это не похоже на правильное решение.   -  person JamesB    schedule 13.05.2011


Ответы (1)


У вас есть парадигма iPad .xib в вашем проекте, а также указан этот файл iPad xib в plist вашего приложения? Если нет, вы можете получить окно только в верхнем левом углу.

Создайте новый универсальный проект для iPhone/iPad, и шаблон покажет вам, где упомянуть xib для iPad в plist.

person hotpaw2    schedule 12.05.2011
comment
Это уже универсальное приложение, и макеты для конкретных устройств находятся в соответствующих группах iPhone или iPad, mainwindow-{device}.xib загружается нормально, это подпредставление, которое добавляется программно, когда приложение запрашивает данные из удаленного источника, чтобы оно работало модально. - person JamesB; 13.05.2011