2011-03-23 12 views
5

Quiero mover UIPopoverArrowDirection hacia la izquierda, de modo que la flecha real ya no esté centrada, sino más un 25% desde la izquierda y un 75% desde la derecha.UIPopoverController que altera la ubicación de UIPopoverArrowDirection

para ayudar a entender lo que quiero decir ver las dos capturas de pantalla que quiero que sea como la segunda ...

Normal Popover

The Popover with correctly placed arrow that I want

El problema es que no hay forma real para profundizar en la clase Popover ... a menos que alguien haya hecho una tercera parte que yo pueda usar?

De todos modos, si alguien sabe cómo resolver esto lo que parece ser un problema trivial ... por favor hágamelo saber ...

~ de Dave

Respuesta

7

Esto ya es factible con la clase integrada especificando "presentPopoverFromRect" y haciendo que rect sea lo suficientemente limitado.

example doing this

El abajo es código tomado directamente de la código que resulta en la anteriormente. La pelusa extra se debe a que la pequeña rueda dentada está en una barra de trabajo de UIT en una UINavigationBar. r es el marco del UIToolbar y está siendo ajustado para presionar el punto correcto (para la flecha) o estaría un poco descentrado. MGSettingsView es el controlador de visualización (con "Habilitar transiciones", "Habilitar modo nocturno", etc. en él).

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]; 

Si esto no es lo que estás preguntando, es mejor que reformules tu pregunta, creo. :)

0

Comprobar a continuación en este método se puede dar el rect para la dirección arrowDirections.

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

@David van Dugteren: avísame si todavía tienes algún problema ... – Jhaliya

1

La clase UIPopoverController proporciona una forma sencilla de mostrar el contenido de las coordenadas (Rect). Usted tiene la capacidad de configurar el popoverArrowDirection que desea autorizar, y eso es todo. A partir de estas informaciones, el sistema mostrará automáticamente el popover para que quepa en la pantalla y respete la dirección que desea, no puede pedir más.

Cuestiones relacionadas