Отображение UIViewController / UIView поверх другого представления

StackOverflow https://stackoverflow.com/questions/816745

  •  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. Не альфа самого представления, но цвета фона .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top