Il mio obiettivo è quello di mantenere le stesse coordinate per un UIPopoverController semplicemente cambiando l'offset della freccia. Quindi in pratica ho tre pulsanti che toccano ognuno di loro mostra un popover. Quando presenta questo popover cambia posizione sullo schermo, ma non lo voglio. Per essere sguardo più chiaro screenoshots:Presente UIPopoverController nella stessa posizione con modifica solo offset della freccia
risposta
Per il mio popover ho voluto la freccia di essere in alto a sinistra invece che in alto al centro (che è di default).
Sono riuscito a ottenere il risultato di seguito (schermata) impostando la proprietà popoverLayoutMargins
di UIPopoverController. È possibile utilizzarlo per ridurre l'area dello schermo utilizzata nei calcoli interni di UIPopoverController per determinare dove mostrare il popover.
Il codice:
// 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];
penso che sarete in grado di ottenere il risultato desiderato modificando quanto sopra.
impostazione popoverLayoutMargins prima di visualizzare funziona alla grande. grazie. – Bastek
Funziona a meraviglia, grazie. – rosshump
C'è un modo per posizionare la punta della freccia esattamente in un punto all'interno della vista sorgente. Sto usando l'intero schermo come vista sorgente, in modo tale che quando ci sono cambiamenti nell'orientamento del dispositivo, cambio solo il sorgente rect, che è di dimensioni 1x1 unità. Il problema è che la freccia è lieve a destra di dove dovrebbe essere. – rraallvv
Non si può fare così com'è con classe UIPopoverViewController built-in di Apple. Ma dovrebbe essere abbastanza semplice e logico implementare il proprio controller di visualizzazione popover (solo una geometria 2D molto semplice e un po 'di scavo nei documenti di UIView).
può essere fatto con i popover di Apple. Se guardi i popover dalle righe di visualizzazione tabella, la freccia può seguire la riga mentre scorre la tabella. Quindi, se la freccia è collegata a un rettangolo in una vista, puoi spostare quella vista e la freccia seguirà. – Gabriel
Ma il contenuto rect rimarrà nella sua posizione originale? Non seguirà la freccia per essere centrata? –
No. Il popover nella mia app è grande, tutto lo spazio disponibile fino in fondo. La freccia punta a una riga della vista tabella nella vista principale di una vista divisa. Quando alla fine appare una nuova riga e scorre la vista tabella, il salice segue la riga. – Gabriel
Sì, puoi farlo. Devi creare una vista aux, con alpha = 0.0f, e usarla per guidare la freccia.
Ad esempio:
auxView = [[UIView alloc] initWithFrame:firstButton.frame];
auxView.alpha = 0.0 ;
auxView.userInteractionEnabled = NO;
[firstButton.superView addSubview:auxView];
[auxView release];
Ok, ora si popover aperta utilizzando questo punto di vista, come guida di freccia.
[thePopoverController presentPopoverFromRect:auxView.bounds inView:auxView
permitedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
E ora si hanno solo per spostare la visualizzazione:
auxView.frame = secondButton.frame;
Utilizzare animazioni per quella mossa, se si desidera.
Un'altra cosa, per questo tipo di freccia a pulsante, preferisco che la freccia tocchi il pulsante. È possibile utilizzare:
presentPopoverFromRect:CGRectInset(auxView.bounds, 4.0, 4.0)
- 1. Come rendere UIPopoverController mantenere la stessa posizione dopo la rotazione?
- 2. .offset() bug con posizione assoluta?
- 3. Regolare la posizione di UIPopoverController dopo il ridimensionamento
- 4. Come modificare la posizione della punta della freccia di NSPopover?
- 5. MousePressEvent, offset posizione in QGraphicsView
- 6. Apertura e modifica della posizione della finestra
- 7. Determinazione della modifica della posizione dell'elemento HTML
- 8. Ordine di modifica dei controlli di Google Map nella stessa posizione (ad esempio RIGHT_TOP)
- 9. Modifica posizione della barra delle azioni Android
- 10. Modifica della posizione di TFS Build
- 11. SqlLite con salto (offset) solo (non limitare)
- 12. Modifica posizione applicazione GAE
- 13. Modifica la posizione della cartella node_modules
- 14. Lista shuffle, assicurandosi che nessun articolo rimanga nella stessa posizione
- 15. Instradamento angolare senza modifica della posizione
- 16. come rilevare la modifica della posizione
- 17. CSS: Difficoltà con offset degli angoli diversi di posizione sfondo
- 18. Come passare all'ultima posizione di modifica in Android Studio
- 19. Intestazione PHP (Posizione: ...): modifica forzata dell'URL nella barra degli indirizzi
- 20. Modifica della posizione della finestra di dialogo sullo schermo Android
- 21. Ottiene la posizione di offset dell'elemento con il rapportatore
- 22. impedisce la posizione del cursore di "freccia su" durante la reimpostazione della posizione del cursore all'interno della casella di testo
- 23. Offset posizione etichetta asse X core
- 24. Posizione personalizzata del suggerimento nella casella Modifica testo.
- 25. tornare alla stessa posizione tornando con scrolling infinito
- 26. Modifica della posizione della nuova scheda di Visual Studio 2008
- 27. Modifica della posizione del mouse quando viene aggiunta la viewbox
- 28. Modifica posizione node_modules
- 29. Spinner con freccia a sinistra
- 30. problema nella modifica della dimensione di uialertview
+1, questa è una domanda interessante. –