在以情节提要板模式形式呈现ViewController时,以前的ViewController会流血。
UIViewController B以模态形式显示UIViewControllerC。他们两个都有UIScrollView
(如果有的话)。当我进入ViewController C时,几乎就像整个视图都小了一点,这样以前的ViewController就可以通过了。看起来像这样:
底部的浅灰色是先前控制器的一部分。我实际上确认它是先前的视图控制器的方式是向其添加了此方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"I'm being touched!");
}
这只会在iOS 7中发生,而不会在iOS 8中发生。
最佳答案
好吧,原来发生这种情况的原因是因为我在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。这样可以使窗口大小保持不变,并且不会再渗出。
关于ios - 在iOS7上模态显示时,以前的UIViewController会流血,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32871118/