Отображение UIViewController / UIView поверх другого представления
-
03-07-2019 - |
Вопрос
Я пытаюсь создать контроллер выбора с кнопкой «Готово», расположенной прямо над ним, для отображения поверх формы, находящейся в другом виде.
Я создал подкласс UIViewController и, используя IB, добавил панель инструментов и представление выбора. Это выглядит нормально, и, скопировав примеры в UICatalog, я могу заставить его отображать необходимые значения, и я могу прослушивать выборки и т. Д.
альтернативный текст http://web.me.com/gareth.davis /so/settlement_picker_ui.png р>
Выше я установил цвет фона для представления альфа 0.0. Я также попытался установить альфа вида само по себе равным 0.0, это просто отображает полностью прозрачный вид. Р>
альтернативный текст http://web.me.com/gareth.davis /so/picker_running_in_app.png р>
Выше приведен контроллер представления, отображаемый поверх моей формы с использованием:
[self presentModalViewController:settlementPickerViewController
animated:YES];
В дополнение к попытке установить различные альфа-свойства моего представления, я также попытался изменить высоту представления таким образом, чтобы не было необходимости в прозрачном сечении, проблема в том, что представление затем располагается на полпути вверх экран.
Решение
Похоже, что решение состоит в том, чтобы не использовать UIViewController, а простой пользовательский UIView отлично справляется со своей задачей.
Я использовал настройку цвета Haentz в методе awakeFromNib:
- (void)awakeFromNib {
picker.delegate = self;
self.backgroundColor = [UIColor clearColor];
}
Обратите внимание, что вы должны реализовать это, а не использовать метод initWithFrame, который шаблон x-кода дает вам в качестве контролируемых nib-представлений, а не использовать initWithFrame (из документации Apple).
Другие советы
Возможно, я просто не понимаю, но я не совсем понимаю, в чем здесь проблема. На нижнем скриншоте элементы пользовательского интерфейса должны быть прозрачными, без белой области сверху? Вам нужно соответствующим образом установить рамку UIView в вашем UIViewController, и я думаю, вам, возможно, придется установить прозрачный цвет фона:
self.view.backgroundColor = [UIColor clearColor];
Я не уверен, так как я никогда не использую IB, но может быть возможно установить значение Alpha цвета фона базового вида равным 0. Не альфа самого представления, но цвета фона . р>