Подтвердить что ты не робот

Прозрачный фон ModalViewController iOS 8

Открыл старый проект в Xcode 6 и обнаружил, что фон не прозрачен в представленном контроллере представления. Я использовал решение в разделе ниже, и он работал до сих пор в ios7. iOS: ModalView с прозрачным фоном?

Пожалуйста, посоветуйте, как работать с iOS 8.

4b9b3361

Ответ 1

Попробуйте установить для свойства modalPresentationStyle контроллера представления представленный новую константу UIModalPresentationOverCurrentContext, например.

[_modalViewController setModalPresentationStyle:UIModalPresentationOverCurrentContext]

Ответ 2

mmccomb решение в конечном итоге сработало для меня, но мне пришлось настроить несколько вещей. Надеюсь, эти детали помогут кому-то:

1) Мне пришлось установить свойство представленного контроллера представления из контроллера представления представления, например:

MyViewController *myVc = [segue destinationViewController];
[myVc setModalPresentationStyle:UIModalPresentationOverCurrentContext];

Настройка стиля презентации из представленного VC viewDidLoad не сработала.

2) Я использовал раскадровку, и мне пришлось войти в свойства segue и установить стиль презентации по умолчанию. Установка любого другого значения дала мне черный фон.

Ответ 3

Решение построителя интерфейса

Благодаря программному решению @mmccomb.

Достичь этого:

  • Создание segue в вашем файле раскадровки (ctrl + click and drag)

  • Выбор Настоящий Модиально из раскрывающихся меню

  • Выберите Modal Segue в раскадровке IB - (только в режиме segue)

  • Задайте Презентация в Инспекторе атрибутов В текущем контексте

Я бы порекомендовал изменить альфа/непрозрачность до 50% + и использовать более темный цвет фона, иначе вам будет трудно различать содержимое представления представления представления и то, которое вы представляете по тексту.

Ответ 4

Если вы изменили стиль презентации в "segue", вы должны изменить его на значение по умолчанию. или он даст вам черный фон.

Я пробовал использовать Storyboard с конфигурацией Segue, но он не работает.

вот код работает для меня, в методе - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender:

// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"PresentStationChooserViewController"])
{
    ChooseStationViewController *controller = [segue destinationViewController];
    controller.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7f];
    [controller setModalPresentationStyle:UIModalPresentationOverCurrentContext];
    controller.stationList = _remoteStations;
}

Ответ 5

iOS8 +

Пожалуйста, посмотрите ниже фрагмент кода, его решена моя проблема,

SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:secondViewController animated:YES completion:nil];