我有一个带有tableview的导航控制器。当您单击其中一个单元格时,它会在其上显示uiwebview的视图。您将被带到YouTube页面。
当您在纵向观看桌面视图并单击一个单元格时,您会看到纵向的youtube页面。更改您的方向视频缩略图不会刷新。因此缩略图更小。这可以。我实际上更喜欢它更小。消耗2行的所有内容将占用1行。换句话说,其他一切都会针对新维度进行调整。
当你在风景中开始时,问题出现了。由于缩略图不会在方向更改时调整大小,更改为纵向模式,图像现在会离开屏幕,而其余内容会正确调整。
[webVIew refresh];
确实有效,但它显然会再次加载整个页面。因此,根据连接的不同,会出现闪烁,或者可能会在完成加载之前将站点变为白色(在较慢的连接上)。
我也尝试在iframe中加载网站。昨天我问了一个类似的问题,这是我正在创建的本地页面。这个问题的答案是将<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0;'>
放在首位。所以我试着用iframe去获取页面。这似乎是一个愚蠢的黑客开始,但我愿意去那里。它根本不会加载页面。我想因为我正在加载的youtube页面重定向到其他页面。经过进一步研究,似乎iframe存在其他问题,例如滚动。
所以我的问题是我怎么能: A.获取缩略图以在方向更改时调整大小/重新加载 要么 B.获取缩略图以加载它将以纵向模式加载的尺寸,即使它是以横向方式启动的。
答案 0 :(得分:0)
您应该在UIViewController类中重写此方法并在那里调整大小:
答案 1 :(得分:0)
我找到了答案,也许有人可以解释它或提供更好的解决方案。还有一个我必须解决的额外错误。
我将视图从以下位置推送到表单时更改了父视图:
[self.navigationController pushViewController:controller animated:YES];
to(重要的部分是320,我将视图限制为肖像):
[self.navigationController pushViewController:controller animated:YES];
controller.webView.hidden = YES;
controller.webView.frame=CGRectMake(0, 0, 320,367);
3.在webview上我像往常一样加载网址:
NSURL *url = [NSURL URLWithString:sUrl];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
4.在webviewdidfinishload中,我现在有:
if (self.interfaceOrientation ==
UIInterfaceOrientationLandscapeLeft ||
self.interfaceOrientation ==
UIInterfaceOrientationLandscapeRight) {
self.webView.frame=CGRectMake(0, 0, 480,227);
}
self.webView.hidden = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
这一切通常都解决了我的问题,但后来我发现我从youtube服务获得的gdata网址实际上已经解析为第二个网址。然后我猜youtube改变了他们的url格式,所以它被转发到第3个网址。这意味着我在最终url加载之前调用了didfinishload代码。为了解决这个问题,我补充说:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[[NSString stringWithFormat:@"%@",request.URL] substringWithRange:NSMakeRange(0, 26)] isEqualToString:@"http://m.youtube.com/watch"]) {
NSString *sUrl=[NSString stringWithFormat:@"%@",request.URL];
sUrl = [sUrl stringByReplacingOccurrencesOfString:@"http://m.youtube.com/watch?" withString:@"http://m.youtube.com/#/watch?"];
NSURL *url = [NSURL URLWithString:sUrl];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
return NO;
}
//NSLog(@"request:%@",request.URL);
return YES;
}
我肯定会更好,但基本上我告诉它忽略第二个网址,并自行更改以转到第三个网址。