[英]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.