2014-10-01 100 views
4

我见过很多如何将UIView的本地点转换为屏幕坐标的例子。例如,将屏幕坐标转换为UIView本地点

CGPoint subContentLocalPoint = subContent.frame.origin ; 
CGPoint basePos = [subContent convertPoint:subContentLocalPoint toView:nil] ; 

但是,如何做到相反? (即转换屏幕坐标一个UIView局部点。) 例如,

屏幕坐标 - X:90 Y:100 UIView的内容 - X:0 Y:0 //因为这是其中的UIView对象是上屏幕。

+1

变化'toView:''到fromView:'。 – rmaddy 2014-10-01 03:40:17

+0

另请注意,在视图和屏幕坐标之间转换是一个两步过程。 'convertPoint:toView:'和'convertPoint:fromView:'转换窗口坐标和从窗口坐标转换。您仍然必须在正确的'UIWindow'上使用'convertPoint:toWindow:'和'convertPoint:fromWindow:'将这些窗口坐标转换为屏幕坐标/从屏幕坐标转换。 – fluidsonic 2014-10-01 03:56:52

+0

@fluidsonic OP是要求屏幕坐标,而不是窗口。所以传递'nil'并使用一次转换就足够了。即使转换是来自“UIView”和“UIWindow”,它仍然可以一步完成。只需通过窗口即可查看。 – rmaddy 2014-10-01 04:04:14

回答

1

如果您想从subContent位置获取屏幕位置,请尝试此操作。

5

屏幕坐标特定视图:

UIView* specificView = ...; 
CGPoint pointInScreen = ...; 
CGPoint pointInWindow = [specificView.window convertPoint:pointInScreen fromWindow:nil]; 
CGPoint pointInView = [specificView convertPoint:pointInWindow fromView:nil]; 
相关问题