在以情节提要板模式形式呈现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/

10-11 08:18