当使用storyboard segue以模态方式呈现ViewController时,之前的ViewController会渗透。
UIViewController B以模态方式呈现UIViewController C.他们都有UIScrollView
(如果重要的话)。当我到达ViewController C时,它几乎就像整个视图只是一点点小,以便前一个ViewController流血。它看起来像这样:
底部浅灰色是前一个控制器的一部分。我实际确认它的方式是前一个视图控制器是我添加了这个方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"I'm being touched!");
}
这仅发生在iOS 7中,而不发生在iOS 8上。
答案 0 :(得分:1)
好吧,原来发生这种情况的原因是因为我在appdelegate中有类似的东西来获取黑色状态栏:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
[application setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
self.window.clipsToBounds =YES;
self.window.frame =CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
这是一个问题,因为它正在改变整个窗口大小。它没有在第一个视图中引起问题,但由于某种原因,它在模态segue期间引起了问题。所以为了修复它,我把它改成了类似的东西:
if (IS_IOS7) {
UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; //You can give your own color pattern
[self.window.rootViewController.view addSubview:addStatusBar];
}
这种方法看起来效果更好,因为我只是在框架顶部添加一个黑色的UIView,而不是改变窗口大小。这使窗口尺寸保持不变,不再渗透。