2012-01-30 14 views

risposta

17

Una volta che hai il punto come CGPoint si può chiamare:

// Objective-C 
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

// C#'s UIView class contains this method: 
PointF ConvertPointToView (PointF point, UIView target); 

su di voi UIView.

passare nel punto in cui le viste coordinano come punto. E per passavedute in

// Objective-C 
[UIWindow keyWindow] 

// C# 
UIWindow.KeyWindow 

Questo sarà quindi restituire un CGPoint (PointF in C#) convertito in finestre sistema di coordinate!

Così, per esempio:

// Objective-C 
CGPoint convertedPoint = [myScrollView convertPoint:textField.frame.origin 
              toView:[UIWindow keyWindow]]; 

// C# 
var convertedPoint = myScrollView.ConvertPointToView (
    textField.Frame.Location, UIWindow.KeyWindow); 

Spero che questo aiuti :)

2

UIView ha alcune convertPoint e convertRect funzioni:

ecc

2

Potrebbe essere solo me, ma non alloggerebbero questo bel lavoro?

- (CGRect) convertView:(UIView*)view 
{ 
    CGRect rect = view.frame; 

    while(view.superview) 
    { 
     view = view.superview; 
     rect.origin.x += view.frame.origin.x; 
     rect.origin.y += view.frame.origin.y; 
    } 

    return rect; 

} 
+0

Non, quando a un certo punto una vista è all'interno di un UIScrollView. –

Problemi correlati