Mi objetivo es mantener las mismas coordenadas para un UIPopoverController con solo cambiar el desplazamiento de la flecha. Así que, básicamente, tengo tres botones tocando cada uno de ellos muestra un popover. Al presentar este popover, cambia de posición en la pantalla, pero no quiero eso. Ser aspecto más claro en screenoshots:Presente UIPopoverController en la misma posición con el cambio de desplazamiento de flecha simple
Presente UIPopoverController en la misma posición con el cambio de desplazamiento de flecha simple
Respuesta
Por mi popover que querían la flecha para ser parte superior izquierda en lugar de la parte superior del centro (que es por defecto).
He logrado obtener el resultado a continuación (captura de pantalla) configurando la propiedad popoverLayoutMargins
del UIPopoverController. Puede usarlo para reducir el área de pantalla utilizada en los cálculos internos del UIPopoverController para determinar dónde mostrar el popover.
El código:
// Get the location and size of the control (button that says "Drinks")
CGRect rect = control.frame;
// Set the width to 1, this will put the anchorpoint on the left side
// of the control
rect.size.width = 1;
// Reduce the available screen for the popover by creating a left margin
// The popover controller will assume that left side of the screen starts
// at rect.origin.x
popoverC.popoverLayoutMargins = UIEdgeInsetsMake(0, rect.origin.x, 0, 0);
// Simply present the popover (force arrow direction up)
[popoverC presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
creo que usted será capaz de obtener el resultado deseado mediante la deformación de los anteriores.
configuración popoverLayoutMargins antes de mostrar funciona muy bien. Gracias. – Bastek
Funciona como un regalo, gracias. – rosshump
¿Hay alguna manera de colocar la punta de la flecha exactamente en un punto dentro de la vista de origen? Estoy usando toda la pantalla como vista de origen, de modo que cuando hay cambios en la orientación del dispositivo, simplemente cambio el rect de origen, que tiene un tamaño de 1x1 unidades. El problema es que la flecha está ligeramente a la derecha de donde se supone que debe estar. – rraallvv
No se puede hacer como se encuentra, clase UIPopoverViewController incorporada de Apple. Pero debería ser bastante simple y lógico implementar tu propio controlador de vistas popover (solo una geometría 2D muy básica y un poco de excavación en los documentos de UIView).
se puede hacer con los popovers de Apple. Si observa los popovers desde las filas de la vista de tabla, la flecha puede seguir la fila a medida que se desplaza la tabla. Entonces, si la flecha está vinculada a un rect en una vista, puedes mover esa vista y la flecha seguirá. – Gabriel
¿Pero se mantendrá el contenido en su posición original? ¿No seguirá la flecha para estar centrado? –
No. El popover en mi aplicación es grande, todo el espacio disponible hasta la parte inferior. La flecha apunta a una fila de la vista de tabla en la vista maestra de una vista dividida. Cuando finalmente aparece una nueva fila y la vista de tabla se desplaza, el areow sigue la fila. – Gabriel
Sí, puedes hacer eso. Tienes que crear una vista auxiliar, con alfa = 0.0f, y usarla para guiar la flecha.
Por ejemplo:
auxView = [[UIView alloc] initWithFrame:firstButton.frame];
auxView.alpha = 0.0 ;
auxView.userInteractionEnabled = NO;
[firstButton.superView addSubview:auxView];
[auxView release];
Ok, ahora popover abierta usando este punto de vista como guía de flecha.
[thePopoverController presentPopoverFromRect:auxView.bounds inView:auxView
permitedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
Y ahora es suficiente con mover la vista:
auxView.frame = secondButton.frame;
Use animaciones para los que se mueven, si quieres.
Una cosa más, para este tipo de flecha a botón, prefiero que la flecha toque el botón. Se puede utilizar:
presentPopoverFromRect:CGRectInset(auxView.bounds, 4.0, 4.0)
- 1. Ajustar la posición de UIPopoverController después de cambiar el tamaño
- 2. Cambio de la posición de la barra de desplazamiento
- 3. Superficie 2d simple con flecha en python?
- 4. posición de desplazamiento con jQuery
- 5. UIPopoverController, cómo cambiar el tamaño de la misma?
- 6. ¿Cómo hacer que UIPopoverController mantenga la misma posición después de rotar?
- 7. impedir el desplazamiento con las teclas de flecha
- 8. Enfoque de desplazamiento con las teclas de flecha en JavaScript
- 9. Establecer la posición de desplazamiento
- 10. Actualice la posición de desplazamiento de UITextView en el iPhone
- 11. Desplazamiento de JScrollPane con las teclas de flecha
- 12. Recordar la posición de desplazamiento en el elemento QML
- 13. Cambio de la posición del diálogo en la pantalla androide
- 14. CSS establecer la posición de desplazamiento predeterminada
- 15. cómo recordar la posición de desplazamiento de la página
- 16. ¿Cambiar la posición de la barra de desplazamiento en TextBox?
- 17. Obtener la posición del ratón en desplazamiento
- 18. CListCtrl: ¿Cómo mantener la posición de desplazamiento?
- 19. C#: ¿sincroniza la posición de desplazamiento de dos RichTextBoxes?
- 20. Mostrar div cuando la posición de desplazamiento
- 21. Posición fija - Desplazamiento horizontal
- 22. Buscar elementos por posición de desplazamiento con jQuery
- 23. ¿Cómo mantengo la posición de desplazamiento en MVC?
- 24. MousePressEvent, desplazamiento de posición en QGraphicsView
- 25. PrimeFaces barra de desplazamiento de datos en la posición deseada
- 26. cambio de posición del navigationItem.title
- 27. Posición de "punta" en un carácter Flecha-Unicode
- 28. Obtener desplazamiento Posición Porcentaje
- 29. div de Flecha
- 30. Posicionamiento de flecha en fancybox
+1, esta es una pregunta interesante. –