Frage

ich habe eine UIView, die kleiner ist als die Superview ist, so dass ich diese Ansicht als eine modale Ansicht vertreten kann, wenn eine Schaltfläche geklickt wird.

Ich habe es geschafft, die folgendes zu tun: * Ein Subview der Superview hinzuzufügen. * Diese modalen Ansicht zentriert

Ich versuche jetzt, die Elemente hinter dem UIView unclickable zu machen. Und auch einen grauen Schatten te den ourside meiner modalen Ansicht hinzufügen, so dass der Benutzer weiß, dass die modale Ansicht die Ansicht im Fokus ist.

Ich würde gerne wissen, wie dies zu erreichen.

Ich möchte nicht die Präsentation modalen Übergang verwenden. Ich weiß, und habe dies bereits in anderen Projekten umgesetzt. Jede Hilfe ist willkommen.

War es hilfreich?

Lösung

Die einfachste Sache wäre ein Vollbild UIView mit einem durchscheinenden grauen Hintergrund legen hinter dem „modal“ -Ansicht. Dann wird es all die Berührungen abfangen. Es könnte wie folgt aussehen:

UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];

[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];

Für die Zukunft können Sie myView.userInteractionEnabled = NO zu deaktivieren Touch-Ereignisse auf einen Blick festgelegt.

Andere Tipps

Es gibt mehrere Möglichkeiten, es zu tun. Wenn Sie eine benutzerdefinierte Ansicht haben, die individuelle Lage hat, können Sie es so ändern:

Erstellen Sie eine Instanz var:

UIView* backgroundView;

Und wenn Sie es brauchen, setzen Sie es hinter dem benutzerdefinierten Ansicht:

if (backgroundView == nil)
        backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)];
backgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[self.view addSubview:backgroundView];
[backgroundView animateBump:customView.view];
[backgroundView addSubview:customView.view];

Wenn Sie es nicht mehr benötigen

   [backgroundView removeFromSuperview];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top