#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 загружается нормально, это вложенное представление, которое добавляется программно, когда приложение запрашивает данные из удаленного источника, чтобы оно работало модально.