私のアプリは、第 4 世代の iPad で webview を読み込んでいます。
768 x 1024 の縦長と 1024 x 768 の横長のビュー サイズがあります。
ただし、読み込んでいるコンテンツは 760 x 1014 です。
アプリは回転とズームをサポートしています。
ビューが読み込まれている場合は、スクロールバー付きの横向きだけでなく、縦向きのフルスクリーンにも収まるようにしたい。
だから私はこのようにヘッダーにメタタグを追加しました
<meta name="viewport" id="view" content="width=760, user-scalable=yes">
私のSDKにも
- (void)viewDidLoad{
mainWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
mainWebView.delegate = self;
[mainWebView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
mainWebView.scalesPageToFit = YES;
mainWebView.contentMode = UIViewContentModeScaleAspectFit;
for(id subview in mainWebView.subviews) {
if([[subview class] isSubclassOfClass:[UIScrollView class]]) {
((UIScrollView *)subview).bounces = NO;
((UIScrollView *)subview).alwaysBounceVertical = NO;
((UIScrollView *)subview).alwaysBounceHorizontal = NO;
((UIScrollView *)subview).bouncesZoom = NO;
((UIScrollView *)subview).maximumZoomScale = 2.0;
((UIScrollView *)subview).minimumZoomScale = 1.0;
}
}
[self.view addSubview:self.mainWebView];
NSURL *url = [NSURL URLWithString:@"http://my app"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[mainWebView loadRequest:request];
}
これらとともに
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
if (interfaceOrientation == UIDeviceOrientationLandscapeLeft || interfaceOrientation == UIDeviceOrientationLandscapeRight) {
NSLog(@"Rotated Landscape");
[mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"view\").setAttribute('content', 'width=1014');"]];
}
return YES;}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
NSLog(@"didRotateFromInterfaceOrientation");
if(fromInterfaceOrientation == UIDeviceOrientationLandscapeLeft || fromInterfaceOrientation == UIDeviceOrientationLandscapeRight) {
[mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"view\").setAttribute('content', 'width=1014');"]];
[mainWebView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
mainWebView.scalesPageToFit = YES;
} else if (fromInterfaceOrientation == UIDeviceOrientationPortrait || fromInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown) {
[mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"view\").setAttribute('content', 'width=760');"]];
[mainWebView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
mainWebView.scalesPageToFit = YES;
}}
PS shouldAutorotateToInterfaceOrientation は呼び出されていません。
私のコードの何が問題なのか教えてください。どんな提案も役に立ちます