UIViewController 的位置

Position of a UIViewController

如何获得模态 UINavigationController 在 iPad-Screen 上的位置?我试过 .view.frame,但我总是得到坐标 0,0。尺寸似乎是正确的。我试图在 viewDidAppear 中获取它,也在 presentViewController 的完成块中。

How do i get the position of a modal UINavigationController on the iPad-Screen? I tried .view.frame, but i always get the coordinates 0,0.

应用的根视图控制器通常会填满应用的整个window,它的框架在其父视图的坐标系中表示,即window。因此,框架矩形的原点位于 (0,0) 就不足为奇了,因为那是 window.

的左上角

现在,window 通常也会填满屏幕,因此 window 的原点也应该位于 (0,0),但如果您在分屏模式下使用应用程序。

可能最简单的方法是使用屏幕的 coordinate space:

将视图控制器的视图映射到屏幕坐标
UIView *view = myViewController.view;
UIScreen *screen = view.window.screen;
NSPoint location = [view convertPoint:view.frame.origin
                    toCoordinateSpace:screen.fixedCoordinateSpace];