uiviewcontroller ios8 modalviewcontroller

uiviewcontroller - ModalViewController fondo transparente iOS 8



ios8 (5)

Solución Builder Interface

Gracias a la solución programática de @ mmccomb.

Lograr esto por:

  1. Creando un segmento en tu archivo de guión gráfico (ctrl + clic y arrastrar)

  2. Elegir Presentar Modalmente de las opciones desplegables

  3. Seleccione el Segue modal en el Guión gráfico IB (solo el segmento)

  4. 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];