iPhone View не будет масштабироваться под экран iPad

#iphone #interface

#iPhone #интерфейс

Вопрос:

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

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

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

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

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

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

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

ПРИМЕЧАНИЕ: прогресс настраивается в файле .h как ProgressActivityViewController)
Это класс служб удаленных данных, который добавляет и удаляет вложенный просмотр, когда вы инициализируете класс RemoteData, вы передаете ему «self» в качестве делегата, чтобы он мог взаимодействовать с ним по протоколу.

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

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

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

Комментарии:

1. Вы проверили свои маски автоматического изменения размера в этом виде? Все ли стойки и пружины включены?

2. Да, в моем XIB у меня есть в основном view и элемент управления UIActivityIndicator внутри этого view. Для всех установлены «масштабировать по размеру» и «автоматически изменять размер вложенных представлений», но если он загружается на iPad, он не будет масштабироваться на экране. Я решил проблему на временной основе, создав автономный xib для iPad и повторно используя некоторый код обнаружения устройства и просто загрузив его в initWithNibNamed:bundle: но это не похоже на правильное решение.

Ответ №1:

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

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

Комментарии:

1. Это уже универсальное приложение, и макеты для конкретного устройства находятся в соответствующих группах iPhone или iPad, главное окно-{device}.xib загружается нормально, это вложенное представление, которое добавляется программно, когда приложение запрашивает данные из удаленного источника, чтобы оно работало модально.