アプリに UIWebView があり、ランドスケープとビューポートのズームと同時に正しく動作させるのに問題があります。
ページを縦向きで読み込んでから電話を回転させると、自動サイズ変更を使用して正しく機能し、ズームに設定されているページをズームインします。ただし、横向きモードで Web ビューを開始した場合は、縦向きに回転してから横向きに戻してズームを正しくする必要があります。モバイル Safari にはこの問題はありません。
たとえば、webview で mobile.washingtonpost.com をランドスケープ モードで読み込むと、テキストが小さくなります。縦向きに回転してから横向きに戻すと、テキストが大きくなります (本来あるべき姿)。モバイル サファリは、横向きに読み込むとすぐにテキストが大きくなるほどスマートです。それが欲しいです :)
回避策はありますが、完全なハックであり、より良い方法があるかどうか疑問に思っています。基本的に、ランドスケープに適切なズームを設定できますが、それは、Web ビューのフレーム サイズを 320 幅に調整してから 480 幅に戻してロードした後でのみ可能です。これは私をそこに連れて行きますが、A) ばかげているように思えます.B) ページが読み込まれるまでそれを行うことができないので、フォントのサイズが変更されます.
以下に、これを行う非常に単純なアプリのコードを示します。これを info.plist に追加して初期方向を横向きに設定することで、シミュレーターでこれを使用するのが最も簡単です。
コードは次のとおりです。
// webviewAppDelegate.m
#import "webviewAppDelegate.h"
@implementation webviewAppDelegate
@synthesize window;
UIWebView *wv;
-(void) doWebView {
wv = [[UIWebView alloc] init];
wv.frame = CGRectMake(0,0,480,300);
[self.view addSubview:wv];
NSURLRequest *r = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mobile.washingtonpost.com"]];
wv.delegate = self;
[wv loadRequest:r];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// HACK
wv.frame = CGRectMake(0,0,320,300);
wv.frame = CGRectMake(0,0,480,300);
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after application launch
[window makeKeyAndVisible];
UIView *blank = [[UIView alloc] init];
self.view = blank;
[window addSubview:self.view];
NSTimer *t = [NSTimer timerWithTimeInterval : 2.0target: selfselector: @selector(doWebView) userInfo:nil repeats: NO];
[[NSRunLoop currentRunLoop] addTimer:t forMode:NSDefaultRunLoopMode];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
returnYES;
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
--------------------------------------------------------
// webviewAppDelegate.h
#import <UIKit/UIKit.h>
@interface webviewAppDelegate : UIViewController <UIApplicationDelegate, UIWebViewDelegate> {
UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end