滚动视图中的iOS webView:根据设备方向更改高度

时间:2017-07-18 10:00:52

标签: ios objective-c webview uiscrollview

我在webView内有scrollView(scrollView> mainView> webView和包含其他组件的view2)。为了只有一个滚动(scrollView一个)我在完成加载时计算webView的高度然后我设置mainView的高度(它的高度等于webView + view2高度)。我的应用程序支持纵向和横向模式。要检查旋转何时发生变化,请使用:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

在此功能中,我调用另一个功能,以便重置webView的内容(设置html内容),以便

(void)webViewDidFinishLoad:(UIWebView *)webView.

可以召回:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    //set the main view height
    [self.loader stopAnimating];
    CGSize contentSize = webView.scrollView.contentSize;
    float scrollHeight = contentSize.height + 270;
    NSLog(@"webViewDidFinishLoad scrollHeight %f", scrollHeight);
    self.mainViewHeight.constant = scrollHeight;

}

我的问题:当应用程序最初处于portrait模式时,scrollView高度正确并且运行正常。之后我将旋转更改为landscape模式,高度也正确,但当我将设备返回portrait时,scrollView保持{{1}的高度即使我在landscape中设置了高度,也可以使用模式。当我在webViewDidFinishLoad中设置断点时,我发现当我从风景模式进入肖像模式时,self.mainViewHeight.constant = scrollHeight;高度不会改变

1 个答案:

答案 0 :(得分:0)

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
   // change the frame for both portrait and landscape
   // check the orientation
   if(toInterfaceOrientation == UIDeviceOrientationPortrait){
    webView.frame = self.view.frame;
   }else {
    //
   }
}