Iphone 在iOS中旋转设备时未正确设置Webview内容

Iphone 在iOS中旋转设备时未正确设置Webview内容,iphone,objective-c,Iphone,Objective C,我有一个应用程序,其中我有一个web视图,我在web视图中显示我的html页面。当html页面的内容超出web视图框架时,我将把web视图框架之外的其余内容传递给新页面。这是正常工作 当以纵向模式启动web视图时,当我旋转屏幕以横向浏览时,web视图内容将正确显示。但是当我将web视图的内容滚动到下一页,然后旋转web视图时,旋转不正常。web视图上显示第一页的一半内容和第二页的一半内容 这是我的代码: - (void)viewDidLoad { [super viewDidLoad];

我有一个应用程序,其中我有一个web视图,我在web视图中显示我的html页面。当html页面的内容超出web视图框架时,我将把web视图框架之外的其余内容传递给新页面。这是正常工作

当以纵向模式启动web视图时,当我旋转屏幕以横向浏览时,web视图内容将正确显示。但是当我将web视图的内容滚动到下一页,然后旋转web视图时,旋转不正常。web视图上显示第一页的一半内容和第二页的一半内容

这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    backbuttonclick=NO;
    textFontSize=100;
    pageControlBeingUsed = NO;
    pagecontrol = [[StyledPageControl alloc] initWithFrame:CGRectMake(208, 959, 358, 36)];
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation ==  UIInterfaceOrientationLandscapeRight) {

        //Landscape
        viewstatus =@"landscape";

        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:20px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 680.0f, 1024.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        pagecontrol.frame =CGRectMake(300, 710, 150, 36);

    }else{

        //Portrait
        viewstatus =@"portrait";
        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:20px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 905.0f, 768.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        pagecontrol.frame =CGRectMake(208, 959, 358, 36);

    }

    UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(handleDoubleTap:)];
    doubleTap.numberOfTouchesRequired = 2 ;
    [self.view addGestureRecognizer:doubleTap] ;
    UIScrollView* sv = nil;
    for(UIView* v in self.webview.subviews){
        if([v isKindOfClass:[UIScrollView class] ]){
            sv = (UIScrollView*) v;
            [sv setZoomScale:9.0f animated:YES];
            sv.bounces = NO;
        }
    }

    [pagecontrol setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
    [pagecontrol addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:pagecontrol];
    webview.scrollView.delegate=self;
    webview.scrollView.showsVerticalScrollIndicator=NO;
    webview.scrollView.bounces = NO;
    webview.scrollView.pagingEnabled = YES;

    NSURL *url = [NSURL fileURLWithPath:dataObject];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webview loadRequest:requestObj];

}
在“web视图完成加载”中,我编写了css将html内容拆分为页面如果创建了内容大小,则视图大小为:

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGFloat height = [[webview stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];

    if (height<960)
    {
        pagecount=1;
    }
    if (height>960&&height<1920)
    {
        pagecount=2;
    }
    if (height>1920&&height<2880)
    {
        pagecount=3;
    }
    if (height>1024)
    {
        NSString *varMySheet = @"var mySheet = document.styleSheets[0];";

        NSString *addCSSRule =  @"function addCSSRule(selector, newRule) {"
        "if (mySheet.addRule) {"
        "mySheet.addRule(selector, newRule);"                               // For Internet Explorer
        "} else {"
        "ruleIndex = mySheet.cssRules.length;"
        "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"   // For Firefox, Chrome, etc.
        "}"
        "}";
        NSString *insertRule1 ;

        if([viewstatus isEqualToString:@"landscape"])
        {
            insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:10px; height: %fpx; -webkit-column-gap:0px; -webkit-column-width: %fpx;')",
680.0f, 1024.0f];
            [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        }
        if([viewstatus isEqualToString:@"portrait"])
        {

            insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:10px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')",
905.0f, 768.0f];
            [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        }

        NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"];
        NSString *setHighlightColorRule = [NSString stringWithFormat:@"addCSSRule('highlight', 'background-color: yellow;')"];
        [webView stringByEvaluatingJavaScriptFromString:varMySheet];
        [webView stringByEvaluatingJavaScriptFromString:addCSSRule];
        [webView stringByEvaluatingJavaScriptFromString:insertRule1];
        [webView stringByEvaluatingJavaScriptFromString:insertRule2];
        [webView stringByEvaluatingJavaScriptFromString:setHighlightColorRule];
    }

    int totalWidth = [[webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] intValue];
    int hi = (int)((float)totalWidth/webview.bounds.size.width);
    self.pagecontrol.numberOfPages=hi;
    self.pagecontrol.hidesForSinglePage=YES;
    [self.pagecontrol setPageControlStyle:PageControlStyleStrokedCircle];
     }
这是我的轮换方法:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if(toInterfaceOrientation == 1 || toInterfaceOrientation == 2)
    {
        viewstatus =@"portrait";
        [self.view bringSubviewToFront:pagecontrol];
        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:20px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 905.0f, 768.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        [webview.superview setAutoresizesSubviews:YES];
        webview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
        pagecontrol.frame =CGRectMake(230, 959, 600, 36);

    }
    if(toInterfaceOrientation == 3 || toInterfaceOrientation == 4)
    {
        viewstatus =@"landscape";
        [self.view bringSubviewToFront:pagecontrol];
        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:10px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 680.0f, 1024.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        [webview.superview setAutoresizesSubviews:YES];
        webview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
       pagecontrol.frame =CGRectMake(300, 710, 150, 36);

    }

}

是的,如果您在xib中使用了webview,那么为什么不让它自动调整大小呢?如下所示。。。

你能发布一些代码吗?@NiravPatel我已经编辑了我的问题。请检查,你已经写了很多代码。现在告诉我你在XIB中提供了Take webview吗?@NiravPatel是的,我在xibHi中提供了web view@NiravPatel检查了我的问题
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if(toInterfaceOrientation == 1 || toInterfaceOrientation == 2)
    {
        viewstatus =@"portrait";
        [self.view bringSubviewToFront:pagecontrol];
        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:20px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 905.0f, 768.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        [webview.superview setAutoresizesSubviews:YES];
        webview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
        pagecontrol.frame =CGRectMake(230, 959, 600, 36);

    }
    if(toInterfaceOrientation == 3 || toInterfaceOrientation == 4)
    {
        viewstatus =@"landscape";
        [self.view bringSubviewToFront:pagecontrol];
        NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px;margin-top:10px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", 680.0f, 1024.0f];
        [webview stringByEvaluatingJavaScriptFromString:insertRule1];
        [webview.superview setAutoresizesSubviews:YES];
        webview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
       pagecontrol.frame =CGRectMake(300, 710, 150, 36);

    }

}