Agregue una subvista a MasterView de UISplitViewController

Necesito agregar una subvista a la parte izquierda de UIViewController , que muestra al usuario que hay algo cerca de la parte izquierda de la pantalla, cuando la vista maestra está oculta (en orientación vertical). Y esta vista debe moverse con la parte izquierda de UISplitView . Algo así como la vista con flecha en estas dos imágenes. (Lo siento por la interfaz rusa) http://s2.uploads.ru/8EHJI.png http://s2.uploads.ru/NhEam.png Pero mi problema es que cuando trato de agregar tal vista, se cierra para Límites de la vista maestra y no está visible cuando la vista maestra está oculta. Creo que lo estoy haciendo mal y hay una manera fácil de hacerlo.

Actualización: he intentado hacer un truco como:

 -(void) clipToBoundsRecursive:(UIView *)someView { NSLog(@"%@", someView); someView.clipsToBounds = NO; for (UIView *v in someView.subviews) { [self clipToBoundsRecursive:v]; } } 

y envíelo a la vista del splitviewcontroller .

 UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; [self clipToBoundsRecursive:splitViewController.view]; 

Tiene efecto en la primera vez (las subvenciones se muestran fuera de los límites de la vista maestra, pero después de la primera animation show / hide desaparecen y no aparecen aunque vuelva a llamar a este método)

Me parece que su aplicación podría beneficiarse de PKRevealController .

Puede agregar la vista directamente a la vista de la window, aunque tendrá que administrar manualmente su position dependiendo de cuándo gira el dispositivo. Las vistas agregadas a la window.view . La vista aparecerá arriba de la rootViewController.view .

He descrito aquí una lógica simple para usted: ( cómo agregar una UIView en la Window y llamarla desde su vista maestra o detallada )

Cree UIView en #import "AppDelegate.h" ,

 - (void) CreateViewInWindow { UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 780)];// set as u wish myView.backgroundColor = [UIColor networkingColor]; // I have added myView to the Window with a specific animation , your can give animation as you like. :) [UIView transitionWithView:self.window duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve // change to whatever animation you like animations:^ { [self.window addSubview:myView]; } completion:nil]; } 

Aquí, cree un simple UIButton en el file DetailViewController.m ( Puede colocar el código en cualquiera de los files, DetailViewController.m OR MasterViewController.m )

 UIButton *btnShowView = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btnShowView addTarget:self action:@selector(btnShowViewTapped:) forControlEvents:UIControlEventTouchUpInside]; btnShowView.frame = CGRectMake(20, 30, 174, 35); //[btnLoginInner setBackgroundImage:[UIImage imageNamed:@"LoginBut.png"] forState:UIControlStateNormal]; [self.view addSubview:btnShowView]; 

En el método de button, escriba el código para llamar a UIView desde AppDelegate , y también no olvide agregar #import "AppDelegate.h" en DetailViewController.m ,

 -(void)btnShowViewTapped:(UIButton *) Sender { AppDelegate *del = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; [del performSelector:@selector(CreateViewInWindow) withObject:nil afterDelay:0]; } 

El código anterior es una lógica simple para su problema, podría ser útil para usted.

Intente deseleccionar la opción de layout automático en identidad y escriba pan si está utilizando nib. De lo contrario, configure la máscara de autorrealización para ver el recorte actual. Creo que resolverá el problema