如何在iOS 8中为自定义呈现的视图控制器处理调用(双高)状态栏的布局?

use*_*004 11 iphone cocoa-touch uiviewcontroller ios ios8

在iOS 7中,我能够处理自定义呈现视图控制器的布局,还通过添加约束来考虑调用状态栏,其中呈现的视图控制器具有与呈现视图控制器相同的中心和相同的宽度和高度.这对于宽度和高度使用自动调整大小是优选的,否则,当呼叫状态栏消失时,由于某种原因,呈现的视图控制器将保持从顶部向下推20点.

然而,在iOS 8中,这个技巧不再起作用了.首先,我通过实验发现,呈现视图控制器似乎不一定在容器视图中,因此我无法将这些约束添加到容器视图中.(2014年WWDC视频中的"A Look Inside Presentation Controllers"示例代码没有将呈现视图控制器放在那里.)似乎让所呈现的视图控制器使用自动布局或自动调整大小来填充容器视图将起作用,但我发现当呼叫状态栏消失时,容器视图本身可能会被按下20分(在iOS 7中不是这种情况).

我一直在使用"A Look Inside Presentation Controllers"示例代码,但即使这段代码也无法正确处理通话状态栏.(UIPresentationController顺便说一句,我仍然试图处理新的API.)

anc*_*jic 0

在被推送到导航堆栈顶部的视图控制器内,我添加了:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.frame = [[UIScreen mainScreen] bounds];
    // rest of the code
}
Run Code Online (Sandbox Code Playgroud)

现在,我不再有顶部偏移的问题了。不确定这是否适合您。如果这个视图控制器有时不全屏显示,那么显然在 viewDidLoad 中手动设置帧是一个坏主意。