【问题标题】:Position of a UIViewControllerUIViewController 的位置
【发布时间】:2019-05-11 20:46:53
【问题描述】:

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

【问题讨论】:

  • 您尝试采用哪种方法?您应该将此类引用推迟到viewDidLayoutSubviewsviewDidAppear
  • (顺便说一句,显然视图控制器没有位置。只有它们的视图有。您可能需要相应地编辑标题和文本。)
  • 视图控制器在屏幕上没有任何位置。我确定您的意思是视图控制器管理的视图,但意识到这是您感兴趣的视图可能会为您指明答案。
  • 正确,这就是解决方案!谢谢!!!!

标签: objective-c ipad uiviewcontroller


【解决方案1】:

如何获得模式 UINavigationController 在 iPad 屏幕上的位置?我试过 .view.frame,但我总是得到坐标 0,0。

一个应用的根视图控制器一般会填满应用的整个窗口,它的框架用它的父视图的坐标系来表示,也就是窗口。因此,框架矩形的原点位于 (0,0) 也就不足为奇了,因为那是窗口的左上角。

现在,窗口通常也会填满屏幕,因此窗口的原点也应该位于 (0,0),但如果您在分屏模式下使用应用程序,则可能会有所不同。

可能最简单的做法是使用屏幕的coordinate space 将视图控制器的视图映射到屏幕坐标:

UIView *view = myViewController.view;
UIScreen *screen = view.window.screen;
NSPoint location = [view convertPoint:view.frame.origin
                    toCoordinateSpace:screen.fixedCoordinateSpace];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多