Прозрачный фон ModalViewController iOS 8
Открыл старый проект в Xcode 6 и обнаружил, что фон не прозрачен в представленном контроллере представления. Я использовал решение в разделе ниже, и он работал до сих пор в ios7.
iOS: ModalView с прозрачным фоном?
Пожалуйста, посоветуйте, как работать с iOS 8.
Ответы
Ответ 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];