当使用 Storyboard转场以模态方式呈现 ViewController 时,之前的 ViewController 会渗漏。
UIViewController B 模态呈现 UIViewController C。他们都有 UIScrollView
(如果重要的话)。当我到达 ViewController C 时,整个 View 几乎都变小了一点点,以至于之前的 ViewController 渗漏了。它看起来像这样:
底部的浅灰色是之前 Controller 的一部分。我实际确认它是以前的 View Controller 的方式是我向它添加了这个方法:
- (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);
}
这是一个问题,因为它改变了整个窗口的大小。它在第一个 View 中没有引起问题,但出于某种原因,它在模态转场期间引起了问题。因此,为了修复它,我将其更改为类似于以下内容:
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 - 以前的 UIViewController 在 iOS7 上以模态方式呈现时会渗漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871118/