2011-04-06 4 views
0

나는 tableview가있는 탐색 컨트롤러가 있습니다. 셀 중 하나를 클릭하면 uiwebview가있는보기가 표시됩니다. 당신은 YouTube 페이지로 이동합니다.uiwebview 풍경에서 시작하는 썸네일은 회전시 크기가 조절되지 않습니다.

세로보기의 테이블보기에서 셀을 클릭하면 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.에/다시로드 크기를 조정 단지 축소판을 가져가도, 세로 모드 모든 시간에로드합니다 :

그래서 제 질문은 내가 할 수있는 방법입니다 그것이 조경에서 시작된 경우에.

당신은 당신의 UIViewController 클래스에서이 메소드를 오버라이드 (override)가 크기 조정을해야

답변

0

답변을 찾았을 때 누군가가 설명하거나 더 나은 해결책을 제시 할 수 있습니다. 내가 해결해야만하는 추가 버그도있었습니다.

  1. uiwebview에 파일 소유자로 설정된 대리인이 있는지 확인했습니다. 그것에서 폼으로 볼 때 푸시
  2. 나는 상위 뷰 변경 :

    [self.navigationController과 pushViewController : 컨트롤러 애니메이션 : YES];

    [self.navigationController pushViewController:controller animated:YES]; 
    controller.webView.hidden = YES; 
    controller.webView.frame=CGRectMake(0, 0, 320,367); 
    

    3.On 난 항상 그랬던 것처럼 내가 URL을로드 웹보기 :

(중요한 부분 320 인, 난 세로로보기를 제한하고 있습니다)

NSURL *url = [NSURL URLWithString:sUrl]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestObj]; 

4.

if (self.interfaceOrientation == 
       UIInterfaceOrientationLandscapeLeft || 
       self.interfaceOrientation == 
       UIInterfaceOrientationLandscapeRight) { 
     self.webView.frame=CGRectMake(0, 0, 480,227); 

    } 
    self.webView.hidden = NO; 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

이 일반적으로 내 문제를 해결 한 것 모두, 그러나 나는 유튜브 서비스에서 받고있어 GDATA URL이 실제로 2 URL로 해결됩니다 것을 발견하십시오 webviewdidfinishload에서 내가 지금 가지고있는. 그럼 난 YouTube에서 3 URL로 전달됩니다 그들의 URL 형식을 변경 추측. 이것은 최종 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; 
} 

더 좋을 수 있는지 메신저하지만, 기본적으로 내가 2 URL을 무시하고 3 URL로 이동하기 위해 내 자신의 변화를 만들기 위해 그것을 말한다.

0

:

  • (무효) willRotateToInterfaceOrientation : (UIInterfaceOrientation) toInterfaceOrientation 시간 : (NSTimeInterval) 기간;
관련 문제