iphone UIWebView,横向,缩放!

iphone UIWebView,横向,缩放!,iphone,uiwebview,webview,landscape,Iphone,Uiwebview,Webview,Landscape,我的应用程序中有一个UIWebView,我很难使它与横向和视口缩放同时正常工作 如果我以纵向方式加载页面,然后使用autoresize旋转手机,手机会正常工作,对设置为缩放的页面进行放大。但是,如果我在横向模式下启动webview,我必须先旋转到纵向,然后再旋转回横向以获得正确的缩放。Mobile Safari没有这个问题 例如,如果从横向模式开始在webview中加载mobile.washingtonpost.com,则文本很小。如果旋转到“纵向”,然后再旋转回“横向”,则文字会按其应有的大小

我的应用程序中有一个UIWebView,我很难使它与横向和视口缩放同时正常工作

如果我以纵向方式加载页面,然后使用autoresize旋转手机,手机会正常工作,对设置为缩放的页面进行放大。但是,如果我在横向模式下启动webview,我必须先旋转到纵向,然后再旋转回横向以获得正确的缩放。Mobile Safari没有这个问题

例如,如果从横向模式开始在webview中加载mobile.washingtonpost.com,则文本很小。如果旋转到“纵向”,然后再旋转回“横向”,则文字会按其应有的大小变大。MobileSafari足够智能,当您在横向加载文本时,它会立即变大。我希望:

我有一个解决办法,但这是一个完全黑客,我想知道是否有更好的方法。基本上,我可以让风景有正确的缩放,但只有在加载后,通过旋转webivew的帧大小到320宽,然后回到480宽。这让我明白了,但是:A这看起来很傻,B我不能这样做,直到页面加载,这样你才能看到字体的大小

下面您可以看到一个非常简单的应用程序的代码。通过将初始方向添加到info.plist,将其设置为横向,最容易在模拟器中使用: 界面定向 UIInterfaceOrientationAndscapeRight

代码如下:

// 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

在webViewDidFinishLoad中或在方向更改后发送webView layoutSubviews消息是否可以修复此问题?我想我已经在我自己的应用程序中看到了您所描述的内容,但总是在我离开编译器无法深入了解行为的时候。webViewDidFinishLoad中的layoutSubivews似乎没有任何效果。很难说它在方向改变中起什么作用,但我担心当我们开始并停留在风景区时会发生什么。此外,它与webview需要适当调整大小掩码的总体问题无关:wv.autoresizingMask=UIViewAutoresizingFlexibleWidth | uiviewautoresizingflexiblewhight;使测试应用程序正确旋转。在webViewDidFinishLoad中或在方向更改后发送webView layoutSubviews消息是否可以解决此问题?我想我已经在我自己的应用程序中看到了您所描述的内容,但总是在我离开编译器无法深入了解行为的时候。webViewDidFinishLoad中的layoutSubivews似乎没有任何效果。很难说它在方向改变中起什么作用,但我担心当我们开始并停留在风景区时会发生什么。此外,它与webview需要适当调整大小掩码的总体问题无关:wv.autoresizingMask=UIViewAutoresizingFlexibleWidth | uiviewautoresizingflexiblewhight;使测试应用程序正确旋转。