2

アプリに 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
4

0 に答える 0