5 Stimmen

UIPopoverController verändert die Position von UIPopoverArrowDirection

Ich möchte die UIPopoverArrowDirection nach links verschieben, sodass der eigentliche Pfeil nicht mehr zentriert ist, sondern eher 25% von links und 75% von rechts befindet.

Um zu verstehen, was ich meine, schauen Sie sich die beiden Screenshots an, ich möchte es so haben wie den zweiten...

Normaler Popover

Der Popover mit korrekt platziertem Pfeil, den ich haben möchte

Das Problem ist, dass es keine Möglichkeit gibt, in die Popover-Klasse zu gelangen...

7voto

Kalle Punkte 13016

Dies ist bereits möglich mit der integrierten Klasse, indem "presentPopoverFromRect" spezifiziert wird und dieser Rahmen hinreichend eingeschränkt wird.

Beispiel dafür

Im Folgenden ist der Code direkt aus dem Code entnommen, der zu dem oben Gesagten führt. Der zusätzliche Schnickschnack ergibt sich daraus, dass das kleine Zahnrad in einer UIToolbar in einer UINavigationBar ist. r ist der Rahmen der UIToolbar und wird angepasst, um den richtigen Punkt zu treffen (für den Pfeil), sonst wäre es etwas aus der Mitte. MGSettingsView ist der Ansichtscontroller (mit "Übergänge aktivieren", "Nachtmodus aktivieren", etc.).

UINavigationItem *item = scrollView.navbar.topItem;
UIToolbar *authorTools = (UIToolbar *)[item.rightBarButtonItem customView];
CGRect r = authorTools.frame;
r.size.width = 18;
r.origin.x += 12;

CGSize popoverSize = CGSizeMake(300.f, 500.f);
MGSettingsView *settingsView = [[MGSettingsView alloc] initWithSize:popoverSize];
UIPopoverController *poctl = [[UIPopoverController alloc] initWithContentViewController:settingsView];
settingsView.popover = poctl;
poctl.delegate = self;
poctl.popoverContentSize = popoverSize;
[poctl presentPopoverFromRect:r inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[settingsView release];

Wenn das nicht ist, wonach du fragst, könntest du deine Frage besser umformulieren, denke ich. :)

1voto

Ludovic Landry Punkte 11306

Die UIPopoverController Klasse bietet eine einfache Möglichkeit, Inhalte von Koordinaten (Rechteck) anzuzeigen. Sie haben die Möglichkeit, die popoverArrowDirection festzulegen, die Sie autorisieren möchten, und das war es auch schon. Basierend auf diesen Informationen wird das System automatisch das Popover so anzeigen, dass es auf den Bildschirm passt und die gewünschte Richtung respektiert, mehr können Sie nicht verlangen.

0voto

Überprüfen Sie unten stehende Methode, in der Sie die Rechtecke für die Pfeilrichtungen angeben können.

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X