uiviewcontroller - ModalViewController fondo transparente iOS 8
ios8 (5)
Solución Builder Interface
Gracias a la solución programática de @ mmccomb.
Lograr esto por:
Creando un segmento en tu archivo de guión gráfico (ctrl + clic y arrastrar)
Elegir Presentar Modalmente de las opciones desplegables
Seleccione el Segue modal en el Guión gráfico IB (solo el segmento)
- Establezca la presentación en el inspector de atributos en el contexto actual
Recomendaría cambiar la alfa / opacidad al 50% o más y usar un color de fondo más oscuro, de lo contrario tendrá dificultades para distinguir entre el contenido del controlador de la vista de presentación y el que está presentando de manera modal.
Se abrió el proyecto anterior en Xcode 6 y se encontró un problema que el fondo no es transparente en el controlador de vista presentado. He utilizado la solución en el tema a continuación y funcionó hasta ahora en ios7. iOS: ¿ModalView con fondo transparente?
Por favor, consejos sobre cómo tratar con iOS 8.
Intente establecer la propiedad modalPresentationStyle del controlador de vista presentado en la nueva constante UIModalPresentationOverCurrentContext, por ejemplo
[_modalViewController setModalPresentationStyle:UIModalPresentationOverCurrentContext]
La solución de mmccomb eventualmente funcionó para mí, pero tuve que modificar un par de cosas. Esperemos que estos detalles ayuden a alguien:
1) Tuve que establecer la propiedad del controlador de vista presentado desde el controlador de vista de presentación, como esto:
MyViewController *myVc = [segue destinationViewController];
[myVc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
Establecer el estilo de presentación desde el viewDidLoad del VC presentado no funcionó.
2) Estaba usando un guión gráfico, y tuve que ir a las propiedades segue y establecer el estilo de Presentación en Predeterminado. Establecer cualquier otro valor me dio un fondo negro.
Si cambió el estilo de presentación en "segue", debe volver a cambiarlo a los valores predeterminados. O te dará un fondo negro.
He intentado usar Storyboard con la configuración de Segue, sin embargo, no funciona.
Aquí está el código que me funciona, en - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
método del - (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;
}
iOS8 +
Por favor, eche un vistazo en el siguiente fragmento de código, resuelto mi problema,
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:secondViewController animated:YES completion:nil];