【问题标题】:presentViewController is moving my rootViewControllerpresentViewController 正在移动我的 rootViewController
【发布时间】:2013-09-19 06:51:42
【问题描述】:

我想知道是否有人对我遇到的问题有想法!

我有一个简单的 viewController,有一个自定义的 appDelegate.window.frame (0, 20, width, height),还有它自己的导航控制器。我实现了一个 UIButton,它呈现一个空的视图控制器。

UIViewController *v = [_controllersList objectAtIndex:indexPath.row];
        v.modalPresentationStyle = UIModalPresentationCurrentContext;
        [self presentViewController:v animated:YES completion:nil]; 

到目前为止,一切正常。如果我展示那个新控制器(一切都很好!)。当我关闭新视图时,我的原始视图控制器框架已以图形方式更改,但未以编程方式更改!

(结果是我的窗口被卡在视图的顶部,并被裁剪,底部有 20 个黑色像素)。

【问题讨论】:

  • 您在哪个 iOS 版本上进行测试?您是否更改(隐藏、显示)呈现视图控制器中的状态栏?
  • 我正在 iOS7 上进行测试(iOS6 上一切正常)。我有一个 20 像素高度的自定义图像作为状态栏,即使在框架移动后仍然可见 =/
  • 也许这对你有帮助:stackoverflow.com/questions/18294872/…
  • 我已经使用该帖子找到了解决方案,但仍然有问题:(
  • 我看到了一个类似的问题,并追踪到触摸可以传递到呈现视图控制器的视图这一事实。呈现视图控制器或其视图是否设置为应用到它的触摸操作可能会导致您看到的效果?

标签: iphone ios objective-c uiviewcontroller statusbar


【解决方案1】:

对我来说,解决方案是更改默认的 modalPresentationStyle 属性:

v.modalPresentationStyle = UIModalPresentationOverFullScreen;

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您可以从窗口 rootviewcontroller 显示视图控制器

    [self.view.window.rootViewController presentViewController:v animated:YES completion:nil];
    

    【讨论】:

    • 谢谢!这个对我有用。使用 rootViewController 进行展示有什么缺点吗?
    【解决方案3】:

    检查您的自动布局选项。可能是自动布局的问题。

    【讨论】:

    • 自动布局未选中(对我的应用使用 xibs,目标构建为 5.0)
    【解决方案4】:

    此解决方案将解决您的问题,当您关闭视图时,每次都会调用视图。

    -(void)viewWillAppear:(BOOL)animated {  
    
      self.view.frame = [[UIApplication sharedApplication].keyWindow bounds];
    }
    

    【讨论】:

    • 实际上,这个解决方案帮助我找到了我的问题!我使用的是 appDelegate.window 边界而不是 view.frame :D
    • @user1147981 - 你能详细说明你找到的解决方案吗?我正在尝试上述修复,但在我的情况下它不起作用。
    • 在我的 appdelegate 中,我将窗口的 frame.origin.y 移动了 20 像素。当我关闭视图控制器时,一个库正在重新初始化我的框架 (PPRevealSideView)。所以“诀窍”是在我的 viewWillAppear 方法中重新设置 window.frame,当它的框架为 0、0 时。我很清楚? :)
    • 这对我来说似乎是一个糟糕的解决方案,因为您没有解决问题,而是在贴墙纸。最好找出为什么会发生变化并解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多