Ho un UIImageView
nel self.view
(la vista principale) e al suo interno c'è un UIButton
. Voglio sapere qual è il frame di UIButton
in self.view
non in UIImageView
.Come ottenere la cornice di una vista all'interno di un'altra vista?
risposta
immagino siete alla ricerca di questo metodo
// Swift
let frame = imageView.convert(button.frame, to: self.view)
// Objective-C
CGRect frame = [imageView convertRect:button.frame toView:self.view];
Qualcosa di simile? potrebbe essere totalmente sbagliato, dint pensavo davvero attraverso; p
CGRect frame = CGRectMake((self.view.frame.origin.x-imageview.frame.origin.x) +btn.frame.origin.x,
(self.view.frame.origin.y.imageview.frame.origin.y)+btn.frame.origin.y,
btn.frame.size.width,
btn.frame.size.height);
Non so se c'è un modo più semplice.
Esistono quattro UIView
metodi che possono aiutare, la conversione CGPoints
e CGRects
da un UIView
coordinate riferimento a un altro:
– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:
quindi puoi provare
CGRect f = [imageView convertRect:button.frame toView:self.view];
o
CGRect f = [self.view convertRect:button.frame fromView:imageView];
Swift 3
È possibile convertire cornice del pulsante per il sistema di coordinate della visualizzazione con questo:
self.view.convert(myButton.frame, from: myButton.superview)
Assicurati di inserire la logica all'interno di viewDidLayoutSubviews
e non di viewDidLoad
. Le operazioni relative alla geometria devono essere eseguite dopo la presentazione delle subview, altrimenti potrebbero non funzionare correttamente.
class ViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myButton: UIButton!
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let buttonFrame = self.view.convert(myButton.frame, from: myButton.superview)
}
}
Si può solo riferimento myButton.superview
anziché myImageView
durante la conversione del telaio.
Qui ci sono più opzioni per la conversione di un CGPoint
o CGRect
.
self.view.convert(point: CGPoint, from: UICoordinateSpace)
self.view.convert(point: CGPoint, from: UIView)
self.view.convert(rect: CGRect, from: UICoordinateSpace)
self.view.convert(rect: CGRect, from: UIView)
self.view.convert(point: CGPoint, to: UICoordinateSpace)
self.view.convert(point: CGPoint, to: UIView)
self.view.convert(rect: CGRect, to: UICoordinateSpace)
self.view.convert(rect: CGRect, to: UIView)
Vedere la Apple Developer Docs per più sulla conversione di un CGPoint
o CGRect
.
- 1. addSubview modificando cornice della vista aggiunto
- 2. Come ottenere la vista genitore dalla vista parziale
- 3. UIView disegna ombra oltre la cornice della vista
- 4. Come animare la traduzione di una vista
- 5. chrome dev tools: manca la vista della cornice dalla timeline
- 6. Come animare la vista dell'intestazione di UITableView
- 7. android - Come ottenere la vista dal contesto?
- 8. Rails: rendering di una vista (non parziale) da una vista
- 9. Carica una vista all'interno di un'altra vista
- 10. aggiunta di una vista personalizzata a una vista di avviso
- 11. Come sovrascrivere una vista personalizzata (vista surreale)
- 12. ottenere sfondo disegnabile di vista
- 13. Come ottenere la vista nell'evento OnContextItemSelected?
- 14. Implementare vista come la vista cercapersone
- 15. Ottieni margine di una vista
- 16. Come controllare la vista tabella di UISearchDisplayController?
- 17. Come posso ottenere il genitore di una vista usando uiautomator?
- 18. Integrazione di una vista SpriteKit in una vista xib
- 19. Rendering di una vista di JBuilder nella vista html
- 20. Android: come ottenere l'ID di una vista genitore?
- 21. Come ottenere le coordinate assolute di una vista
- 22. Impostare la posizione assoluta di una vista
- 23. È possibile fare uno screenshot di una vista senza mostrare la vista?
- 24. come ottenere full momentjs api all'interno di una vista angolare?
- 25. dispatchTouchEvent Android ottenere vista
- 26. come ottenere la finestra di ActivityToken senza vista?
- 27. Come trovare la larghezza di una vista prima che venga visualizzata la vista?
- 28. Come oscurare la vista di sfondo quando viene visualizzata una vista personalizzata
- 29. Come determinare la dimensione di una vista Android in pixel?
- 30. Come estendere l'area tattile di una vista