Note that there are some explanatory texts on larger screens.

plurals
  1. POUIWebView dones't resize correctly when orientation change?
    primarykey
    data
    text
    <p>I have add a webview,a titleLabel and a coverflowView on a viewcontroller's view as its subviews, I want it to change size when the orientation change. I have change the webview's frame in this method: </p> <pre><code> - (void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration: (NSTimeInterval)duration </code></pre> <p>its content did resize when rotate iPad from orientationLandscape to orientationPortrait or from orientationPortrait to orientationLandscape if I start the application with portrait orientation, but it is so strange that its content dosen't resize when I start the application with landscape orientation...But the NSLog shows the frame has changed. As to the titleLabel and the coverflowView, they resize correctly. I doubt if it is because of css?I have use css to control the content's style according to the height and width of webview.Does anyone could help me to find the reason? the code is below:</p> <pre><code>- (void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration: (NSTimeInterval)duration { double i = 0; NSInteger width=self.view.frame.size.width; NSInteger height=self.view.frame.size.height; NSLog(@"view :%@",[self.view description]); switch (toInterfaceOrientation){ case UIInterfaceOrientationPortrait: { NSLog(@"rotate to Portrait"); if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ self.docView.frame=CGRectMake(0, 50, width+20, height-70); self.toolbar.frame=CGRectMake(0, 0,height , 50); for (UIView * view in [toolbar subviews]) { if ([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kBackButtonTag){ view.frame=CGRectMake(width-60, 6, 50, 36); }else if([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kReloadButtonTag){ view.frame=CGRectMake(width-160, 6, 80,36 ); } } [coverflow setFrame:CGRectMake(0, 0 , width+20, height/2-50)]; [titleLabel setFrame:CGRectMake(width/2-40,height/2-100, 100, 20)]; if ([[[UIDevice currentDevice]model]isEqualToString:@"iPad"]) { self.viewer.frame=CGRectMake(0, 0, 768, 1004); }else{ self.viewer.frame=CGRectMake(0, 0, 320, 480); } } i=0; }break; case UIInterfaceOrientationPortraitUpsideDown: { NSLog(@"rotate to PortraitUpsideDown"); if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ self.docView.frame=CGRectMake(0, 50, width+20, height-70); self.toolbar.frame=CGRectMake(0, 0,height , 50); for (UIView * view in [toolbar subviews]) { if ([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kBackButtonTag) { view.frame=CGRectMake(width-60, 6, 50, 36); }else if([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kReloadButtonTag){ view.frame=CGRectMake(width-160, 6, 80,36 ); } } [coverflow setFrame:CGRectMake(0, 0 , width+20, height/2-50)]; [titleLabel setFrame:CGRectMake(width/2-40,height/2-100, 100, 20)]; if ([[[UIDevice currentDevice]model]isEqualToString:@"iPad"]) { self.viewer.frame=CGRectMake(0, 0, 768, 1004); }else{ self.viewer.frame=CGRectMake(0, 0, 320, 480); } } i=180; } break; case UIInterfaceOrientationLandscapeLeft:{ NSLog(@"rotate to LandscapeLeft"); if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ // self.coverflow.frame=CGRectMake(0, 0, height+20, width-20); self.docView.frame=CGRectMake(0, 50, height+20, width-70); self.toolbar.frame=CGRectMake(0, 0,height+20 , 50); for (UIView * view in [toolbar subviews]) { if ([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kBackButtonTag) { view.frame=CGRectMake(height-60, 6, 50, 36); NSLog(@"button %@",[view description]); }else if([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kReloadButtonTag){ view.frame=CGRectMake(height-160, 6, 80,36 ); } } [coverflow setFrame:CGRectMake(0, 0 , height+20, width/2-50)]; [titleLabel setFrame:CGRectMake(height/2-40,width/2-80, 100, 20)]; if ([[[UIDevice currentDevice]model]isEqualToString:@"iPad"]) { self.viewer.frame=CGRectMake(0, 0, 1024, 748); }else{ self.viewer.frame=CGRectMake(0, 0, 480, 320); } } i = 90; }break; case UIInterfaceOrientationLandscapeRight:{ NSLog(@"rotate to LandscapeRight"); if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ // self.coverflow.frame=CGRectMake(0, 0, height+20, width-20); self.docView.frame=CGRectMake(0, 50, height+20, width-70); self.toolbar.frame=CGRectMake(0, 0,height+20 , 50); for (UIView * view in [toolbar subviews]) { if ([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kBackButtonTag) { view.frame=CGRectMake(height-60, 6, 50, 36); } else if([view isKindOfClass:[UIButton class]] &amp;&amp; view.tag==kReloadButtonTag){ view.frame=CGRectMake(height-160, 6, 80,36 ); } } [coverflow setFrame:CGRectMake(0, 0 , height+20, width/2-50)]; [titleLabel setFrame:CGRectMake(height/2-40,width/2-80, 100, 20)]; if ([[[UIDevice currentDevice]model]isEqualToString:@"iPad"]) { self.viewer.frame=CGRectMake(0, 0, 1024, 748); }else{ self.viewer.frame=CGRectMake(0, 0, 480, 320); } } i = -90; }break; } //[webViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; // [self.view setNeedsDisplay]; // NSLog(@"coverflowView :%@",[self.coverflow description]); NSLog(@"webview :%@",[viewer description]); [viewer stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.__defineGetter__('orientation',function(){return %f;});",i]]; [viewer stringByEvaluatingJavaScriptFromString:@"var e = document.createEvent('Events'); e.initEvent('orientationchange', true, false); document.dispatchEvent(e); "]; } - (void)viewDidLoad { self.view.clipsToBounds=YES; self.view.autoresizesSubviews=YES; // self.view.autoresizingMask=UIViewAutoresizingNone; viewer=[[UIWebView alloc]initWithFrame:self.view.bounds]; [self.view addSubview:viewer]; viewer.delegate=self; viewer.scalesPageToFit=NO; viewer.autoresizesSubviews=NO; viewer.autoresizingMask=UIViewAutoresizingNone; viewer.dataDetectorTypes=0; // viewer.autoresizingMask=UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight; NSLog(@"webView :%@",[viewer description]); // [viewer setFrame:CGRectMake(0, self.view.bounds.size.height/2 , self.view.bounds.size.width, self.view.bounds.size.height/2)]; // [viewer setBounds:CGRectMake(0, self.view.bounds.size.height/2 , self.view.bounds.size.width, self.view.bounds.size.height/2)]; UIScrollView *scroller=[viewer.subviews objectAtIndex: 0]; if (scroller) { scroller.alwaysBounceVertical=NO; scroller.bounces=NO; scroller.scrollEnabled=NO; } [self viewHomePage]; //[self createCoverFlowView]; [self createPopView]; //[self setHomeButtonPosition]; //[self setSettingButtonPosition]; #if __IPHONE_OS_VERSION_MIN_REQUIRED &gt; 30000 UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; [self.view addGestureRecognizer:longPress]; longPress.minimumPressDuration=2.0; longPress.delegate = self; longPress.cancelsTouchesInView = NO; longPress.allowableMovement=20; [longPress release]; UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; [self.view addGestureRecognizer:singleTap]; singleTap.delegate = self; singleTap.cancelsTouchesInView = NO; [singleTap release]; #endif //[viewer setOpaque:YES]; //透明 [super viewDidLoad]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload