2011-11-10 9 views

risposta

77

immagino siete alla ricerca di questo metodo

– convertRect:toView:

// Swift 
let frame = imageView.convert(button.frame, to: self.view) 

// Objective-C 
CGRect frame = [imageView convertRect:button.frame toView:self.view]; 
2

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.

17

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

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.

Problemi correlati