2014-11-22 55 views
0

我以为我已经清理了,但显然不是。我使用下面的代码将webview设置为出现在顶部的标签栏和底部的标签栏之间。这发生在我的viewDidLoad()方法中。在我测试过的所有模拟器上都能正常工作,但是当我测试朋友的iPhone 4s运行7.1.1时,webview呈现跨越屏幕的整个高度,同时覆盖顶部标签栏和底部标签栏。IOS查看仍然没有加载到正确的位置

如何在所有设备和操作系统7以上获得所需的行为?

self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

[self.view addSubview:self.webView]; 
self.webView.scalesPageToFit = true; 
NSURL *url = [NSURL URLWithString:@"http://example.com/notifications.php"]; 
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
[self.webView loadRequest:requestURL]; 
self.webView.scrollView.showsVerticalScrollIndicator = false; 

self.navigationController.navigationBar.titleTextAttributes = @{UITextAttributeTextColor : [UIColor whiteColor]}; 

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
self.webView.delegate = self; 
self.webView.scrollView.delegate = self; 

回答

1

这是因为你在你的矩形覆盖了整个视图 让你需要减去的标签和导航栏

的高度和宽度来看看这个例子

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CGFloat viewheight = self.view.frame.size.height; 
    CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height; 
    CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height; 
    CGFloat spaceToRemove = navBarHeight + tabBarHeight; 
    CGFloat newHeight = viewheight - spaceToRemove; 

    NSLog(@"%f",newHeight); 
    NSLog(@"%f",self.view.frame.size.height); 


    CGRect frame = CGRectMake(0 , 0 + navBarHeight, self.view.frame.size.width, newHeight); 

    UIView *newView = [[UIView alloc]initWithFrame:frame]; 
    newView.backgroundColor = [UIColor redColor]; 
    [self.view addSubview:newView]; 


} 
+0

不幸的是苹果还没有解决这个问题。我的意思是我无法想象我想让我的内容被酒吧或键盘覆盖的场景。 – 2014-11-22 23:33:59

+0

这是一个耻辱,这并不简单。为什么上面的代码适用于其他设备?在夜晚结束之前,我会测试这段代码,看看会发生什么。谢谢 – Voltron 2014-11-22 23:39:02

+0

我不确定为什么完全由于某种原因,新的操作系统试图覆盖一切,至少可以说是相当令人沮丧。我希望我有一个更简单的方法,但我肯定还没有想过。 – 2014-11-22 23:41:24