present modally modal ios objective-c background modalviewcontroller

ios - swift 4 present modally



iOS: ModalView con fondo transparente? (6)

En el PresentingViewController copie el siguiente código debajo de storyboard segue o IBAction.

SecondViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"secondViewController"]; //SecondViewController *viewController = [SecondViewController alloc]init]; // if you are adding the viewcontroller programatically viewController.modalPresentationStyle = UIModalPresentationOverCurrentContext; [viewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [self presentViewController:viewController animated:YES completion:nil];

En el segundo ViewController realice los siguientes pasos mediante el guión gráfico o mediante el código:

  1. Establezca el self.view fondo de la vista ( self.view ) en clearcolor y reduzca la opacidad al 50%
  2. Ahora puedes realizar una vista modal semitransparente.

Quiero mostrar una vista modal en un viewController. (que tiene un controlador de navegación).

En mi opinión, tengo texto y un botón para mostrar la vista modal.

Creé un .xib que contenía mi vista modal (es una vista con una imagen y una etiqueta).

Cuando lo muestro, con eso:

ShareController *controller = [[ShareController alloc] initWithNibName:@"ShareController" bundle: nil]; controller.view.backgroundColor = [UIColor clearColor]; controller.modalPresentationStyle = UIModalPresentationFormSheet; controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; [self presentViewController:controller animated:YES completion:nil];

Tengo mi vista modal, PERO, el fondo se vuelve negro ... y quiero ver siempre el texto en mi vista. (Intenté configurar alfa, etc.; pero NOTHING se ejecuta: ''()

¿Alguien que me ayude?

Gracias,


Ese es el color UIWindow''s , puede UIWindow color de UIWindow en appDelegate.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; return YES; }


La respuesta rápida es que no puede presentar una vista modal transparente, no con presentViewController: animated: completed: method. Porque no puede hacer que el controlador de vista modal sea transparente (su vista es mucho más que eso).

Puedes crear una vista personalizada y animarla manualmente, esta es una forma de crear algo que necesitas.


Puedes consultar el ejemplo de iOS7 (ver mi comunic.) o simplemente puedes probar esto:

eliminar esta línea de su método de "presentación"

controller.view.backgroundColor = [UIColor clearColor];

ahora, en viewDidLoad del ShareController agregar:

self.view.backgroundColor = [UIColor clearColor]; self.modalPresentationStyle = UIModalPresentationCurrentContext; self.modalPresentationStyle = UIModalPresentationFormSheet;

PD

Si tienes un navigationController ... usa

[self.navigationController presentViewController:controller animated:YES completion:nil];


Si desea que su modalVC esté sobre la barra de pestañas, debe definir el estilo de presentación como UIModalPresentationOverFullScreen

[_presentedViewController setModalPresentationStyle:UIModalPresentationOverFullScreen]; [_presentingViewController presentViewController:_presentedViewController animated:YES completion:nil];


Use el siguiente fragmento de código para hacerlo en iOS 8 en adelante:

Para el Objetivo C:

UIViewController *walkThru = [self.storyboard instantiateViewControllerWithIdentifier:@"WalkThroughScene"]; walkThru.providesPresentationContextTransitionStyle = YES; walkThru.definesPresentationContext = YES; [walkThru setModalPresentationStyle:UIModalPresentationOverCurrentContext]; [self.navigationController presentViewController:walkThru animated:YES completion:nil];

Para Swift:

let viewController : XYZViewController = self.storyboard!.instantiateViewControllerWithIdentifier(“XYZIdentifier”) as! XYZViewController viewController.providesPresentationContextTransitionStyle = true viewController.definesPresentationContext = true viewController.modalPresentationStyle=UIModalPresentationStyle.OverCurrentContext self.presentViewController(viewController, animated: true, completion: nil)

Y el color de fondo de su viewController presentado debe ser clearColor.