Essentiellement, ce que je cherche à faire, c’est, disons, que j’ai un contrôleur de vue, appelé V1, doté d’une vue régulière et d’un bouton. Maintenant, lorsque vous appuyez sur ce bouton, je souhaite que ce bouton crée une action qui ouvre un autre contrôleur de vue, appelé V2, au sein du même contrôleur de vue, V1.
La taille de la V2 sera réduite de manière à ne pas remplir l'écran en entier, mais vous pourrez toujours voir le premier calque qui est V1 derrière la V2. Donc, fondamentalement, vous ne quittez jamais vraiment la V1. J'espère que cela a du sens pour ce que j'essaie de faire. Je sais que l'application MTV a cette fonctionnalité. Voici une image de ce dont je parle: https://docs.google.com/leaf?id=0BzlCAVXRsIPcNWUxODM2MDAtNDE3OS00ZTc4LTk5N2MtZDA3NjFlM2IzNmZk&hl=fr
Un exemple de code ou un exemple est ce que je recherche aussi.
Merci
Vous pouvez créer une telle vue en définissant le type de propriété approprié modalPresentationStyle
. Voir mon exemple ci-dessous:
UIViewController *V2 = [[UIViewController alloc] init];
V2.modalPresentationStyle = UIModalPresentationFormSheet;
V2.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[V1 presentViewController:V2 animated:YES completion:nil];
V2.view.superview.frame = CGRectMake(0, 0, 540, 620); //it's important to do this after presentModalViewController
V2.view.superview.center = V1.view.center;
[V1 release];
Essaye ça:
V2 *d = [[V2 alloc]initWithNibName:@"V2" bundle:nil];//assuming V2 is name of your nib as well
d.delegate = self; //Optional:you only need this if you want to delegate
//create popover and put V2 in the popover view
UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:d];
popoverController.delegate = self; //optional
CGSize size = CGSizeMake(325, 75); // size of view in popover…V2
popoverController.popoverContentSize = size;
[d release];
[popoverController presentPopoverFromRect:yourButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Si vous souhaitez présenter ceci sous forme de popup modal dans iOS 8 avec un style similaire à la capture d'écran de l'OP, voici ce que j'ai fait:
UIViewController *V2 = [[UIViewController alloc] init]; // V2 is the popup
V2.modalPresentationStyle = UIModalPresentationFormSheet;
V2.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
V2.preferredContentSize = CGSizeMake(325, 75); // size of popup view
[V1 presentModalViewController:V2 animated:YES]; // V1 is the current topmost view controller
J'aime mieux cela que d'utiliser un UIPopover parce que vous n'avez pas besoin de bousiller les directions des flèches et que l'utilisateur ne peut pas le fermer en tapotant en dehors de la popup.
Ces propriétés peuvent également être définies dans un storyboard/nib via le concepteur. Pour définir preferredContentSize, cochez la case "Utiliser la taille explicite préférée" et définissez les valeurs.
Cela ne fonctionne que sur l'iPad.
Il existe une très bonne bibliothèque pour afficher un contrôleur de vue en tant que Popup sur iPhone Voir ici https://github.com/martinjuhasz/MJPopupViewController
file .m
---> c'est le fichier d'implémentation
-(IBAction)anyAlert:(id)sender{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"A Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK!", @"Other Title", nil];
[alert show];
[alert release];
}
rappelez-vous déclarer
-(IBAction)anyAlert:(id)sender;
dans le file .h
---> fichier d'en-tête
Cela fonctionne pour moi, j'espère pour vous ...
Si vous utilisez Storyboard, vous pouvez suivre cette étape:
- Ajoutez un contrôleur de vue (V2), configurez l'interface utilisateur comme vous le souhaitez
* basé sur l'image que vous avez jointe
Present V2 Modally
Cliquez sur la segue. Dans l'inspecteur Attributs, définissez la présentation comme en plein écran . Supprimer l'animation si vous aimez
- Sélectionnez V2. Dans l'inspecteur Attributs, définissez la présentation comme en plein écran . Vérifier Définit le contexte et fournit le contexte
- Sélectionnez le MainView de votre V2 (image de contrôle Pls.). Définissez backgroundColor sur Clear Color
Créez UIView
pour v2
et ajoutez v1
.
- (void)viewDidLoad
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.view addSubview:button];
}
- (void)aMethod:(id)sender
{
CGRect * imageFrame = CGRectMake(10, 90, 300, 300);
V2 *v2 = [[V2 alloc] initWithFrame:imageFrame];
[self.view addSubview:v2];
}