UIWebView 屏幕适配问题
UIWebView Screen Fitting Issue
我在 Twitter Bootstrap
开发了一个网站,我现在使用 UIWebView
在 IOS 应用程序中显示该网站。我让它显示正常,但屏幕关闭并且它 运行 离开屏幕的一侧......我觉得我的 UIWebView 配置可能有误,如果我去它在我的移动设备上的 Safari 中,所以我知道该网站工作正常。
它甚至在 UIWebView 中显示 Google 错误....我将在下面显示我的代码和 2 个屏幕截图(第一个屏幕截图是它当前的样子,第二个是它应该的样子以及它在 safari mobile 中的样子:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
_webView.scalesPageToFit = YES;
_webView.frame=self.view.bounds;
[_webView loadRequest:request];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
原样屏幕截图
待定屏幕截图
您应该在 [_webView loadRequest:request];
之后添加以下代码:
_webView.scalesPageToFit = YES;
如果您的 UIWebView 位置不正确,请添加以下代码:
_webView.frame=self.view.bounds;
在我看来,UIWebView 在 Storyboard 或 Interface Builder 中的设置似乎不正确。你用Auto Layout吗?如果是,约束设置是否正确?
确保 UIWebView 全屏显示的一种简单方法是添加 4 个约束,使其与其父视图的顶部、底部、前导和尾部边缘对齐,例如像这样:
编辑:Here are some rough instructions 关于如何添加这些约束。
在“实用程序”窗格中,select "Scales Pages to Fit":
在 Web 视图所在的视图控制器中,确保您可以查看视图的框(或边界)(注意:底部没有出现,因为我无法将其放入图像中) :
视图控制器中的代码:
#import "SomeViewController.h"
@interface SomeViewController ()
@end
@implementation SomeViewController
@synthesize webView;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSString *urlLink = @"www.google.com";
NSURL *url = [NSURL URLWithString:urlLink];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:urlRequest];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
视图控制器中其他设置的图片:
不需要两次使用loadRequest:
,使用:
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[_webView reload];
}
我在 Twitter Bootstrap
开发了一个网站,我现在使用 UIWebView
在 IOS 应用程序中显示该网站。我让它显示正常,但屏幕关闭并且它 运行 离开屏幕的一侧......我觉得我的 UIWebView 配置可能有误,如果我去它在我的移动设备上的 Safari 中,所以我知道该网站工作正常。
它甚至在 UIWebView 中显示 Google 错误....我将在下面显示我的代码和 2 个屏幕截图(第一个屏幕截图是它当前的样子,第二个是它应该的样子以及它在 safari mobile 中的样子:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
_webView.scalesPageToFit = YES;
_webView.frame=self.view.bounds;
[_webView loadRequest:request];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
原样屏幕截图
待定屏幕截图
您应该在 [_webView loadRequest:request];
之后添加以下代码:
_webView.scalesPageToFit = YES;
如果您的 UIWebView 位置不正确,请添加以下代码:
_webView.frame=self.view.bounds;
在我看来,UIWebView 在 Storyboard 或 Interface Builder 中的设置似乎不正确。你用Auto Layout吗?如果是,约束设置是否正确?
确保 UIWebView 全屏显示的一种简单方法是添加 4 个约束,使其与其父视图的顶部、底部、前导和尾部边缘对齐,例如像这样:
编辑:Here are some rough instructions 关于如何添加这些约束。
在“实用程序”窗格中,select "Scales Pages to Fit":
在 Web 视图所在的视图控制器中,确保您可以查看视图的框(或边界)(注意:底部没有出现,因为我无法将其放入图像中) :
视图控制器中的代码:
#import "SomeViewController.h"
@interface SomeViewController ()
@end
@implementation SomeViewController
@synthesize webView;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSString *urlLink = @"www.google.com";
NSURL *url = [NSURL URLWithString:urlLink];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:urlRequest];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
视图控制器中其他设置的图片:
不需要两次使用loadRequest:
,使用:
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[_webView reload];
}