HINWEIS: Diese Lösung ist in iOS 8 defekt. Ich werde die neue Lösung so schnell wie möglich veröffentlichen.
Ich werde hier mit Storyboard antworten, aber es ist auch ohne Storyboard möglich.
Init: Erstellen Sie zwei UIViewControllerim Storyboard.
- Nehmen wir an,
FirstViewControllerwas normal ist und SecondViewControllerwelches das Popup sein wird.
Modal Segue: Setzen Sie UIButtonin FirstViewController und Segue auf diese erstellen UIButtonzu SecondViewControllermodal segue.
Transparent machen: Wählen Sie nun UIView( UIViewdie standardmäßig mit erstellt wird UIViewController) von SecondViewControllerund ändern Sie die Hintergrundfarbe in klare Farbe.
Machen Hintergrund Dim: Fügen Sie ein UIImageViewin SecondViewControllerder ganzen Bildschirm ausfüllt und setzt sein Bild bis zu einem gewissen gedimmt halbtransparentes Bild. Ein Beispiel erhalten Sie hier: UIAlertViewHintergrundbild
Display-Design: Fügen Sie nun ein Design hinzu UIViewund erstellen Sie ein beliebiges Design, das Sie anzeigen möchten. Hier ist ein Screenshot meines Storyboards

- Hier habe ich eine Schaltfläche zum Anmelden hinzugefügt, die
SecondViewControllerals Popup geöffnet wird , um nach Benutzername und Passwort zu fragen
Wichtig: Nun zum Hauptschritt. Wir möchten, dass SecondViewControllerFirstViewController dadurch nicht vollständig ausgeblendet wird. Wir haben klare Farben eingestellt, aber das reicht nicht aus. Standardmäßig wird hinter der Modellpräsentation Schwarz hinzugefügt, sodass in viewDidLoad von eine Codezeile hinzugefügt werden muss FirstViewController. Sie können es auch an einer anderen Stelle hinzufügen, es sollte jedoch vor dem Übergang ausgeführt werden.
[self setModalPresentationStyle:UIModalPresentationCurrentContext];
Entlassen: Wann entlassen werden muss, hängt von Ihrem Anwendungsfall ab. Dies ist eine modale Präsentation. Um dies zu verwerfen, tun wir das, was wir für eine modale Präsentation tun:
[self dismissViewControllerAnimated:YES completion:Nil];
Das ist alles.....
Vorschläge und Kommentare sind willkommen.
Demo:
Sie können das Demo-Quellprojekt von Here: Popup Demo herunterladen
NEU : Jemand hat bei diesem Konzept sehr gute Arbeit geleistet: MZFormSheetController
Neu : Ich habe einen weiteren Code gefunden, um diese Art von Funktion zu erhalten: KLCPopup
iOS 8-Update : Ich habe diese Methode für iOS 7 und iOS 8 entwickelt
+ (void)setPresentationStyleForSelfController:(UIViewController *)selfController presentingController:(UIViewController *)presentingController
{
if (iOSVersion >= 8.0)
{
presentingController.providesPresentationContextTransitionStyle = YES;
presentingController.definesPresentationContext = YES;
[presentingController setModalPresentationStyle:UIModalPresentationOverCurrentContext];
}
else
{
[selfController setModalPresentationStyle:UIModalPresentationCurrentContext];
[selfController.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];
}
}
Kann diese Methode in prepareForSegue deligate wie folgt verwenden
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
PopUpViewController *popup = segue.destinationViewController;
[self setPresentationStyleForSelfController:self presentingController:popup]
}