[英]Odd behaviour when using UITableView in a UIViewController that is presented Modally
[英]Previous UIViewController bleeds through when presented modally on iOS7
在以情节提要板模式形式呈现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。 这样可以使窗口大小保持不变,并且不会再渗出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.