这是我第一次接触Mac并尝试开发一个带有webView的小应用程序,并且必须在其上显示网站。
幸运的是,我能够在网页视图中显示它,但不幸的是,该网站并不完全适合模拟器。我的意思是网站宽度更多,内容跨越模拟器宽度的边界和webview上随机传播的内容。
我在谷歌搜索上尝试了各种各样的东西,可行的是这个(未评论):
//
// ViewController.m
// WebView
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
/* //commented because it do not fit the website in simulator
NSString *fullURL = @"http://stackoverflow.com";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
*/
NSString *urlAddress = @"http://stackoverflow.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSString *html = [NSString stringWithContentsOfURL:url encoding:[NSString defaultCStringEncoding] error:nil];
NSRange range = [html rangeOfString:@"<body"];
if(range.location != NSNotFound)
{
// Adjust style for mobile
float inset = 60;
NSString *style = [NSString stringWithFormat:@"<style>div {max-width: %fpx;}</style>", self.view.bounds.size.width - inset];
html = [NSString stringWithFormat:@"%@%@%@", [html substringToIndex:range.location], style, [html substringFromIndex:range.location]];
}
[_webView loadHTMLString:html baseURL:url];
}
- (void)webViewDidFinishLoad:(UIWebView *)theWebView
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"from appl will enter webViewDidFinishLoad" message:@"from appl will enter webViewDidFinishLoad" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
CGSize contentSize = theWebView.scrollView.contentSize;
CGSize viewSize = theWebView.bounds.size;
float rw = viewSize.width / contentSize.width;
theWebView.scrollView.minimumZoomScale = rw;
theWebView.scrollView.maximumZoomScale = rw;
theWebView.scrollView.zoomScale = rw;
}
@end
和controller.h是:
////////////////////////
//
// ViewController.h
// WebView
//
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@end
此代码适合我视图中的webiste(仅代码的非注释部分),但有2个问题:
(1)该网站非常适合XCode的模拟器(插入= 60值),但当我点击本网站中任何适合的标签/按钮时,如果该标签/按钮打开一个新的链接,那么这个新的链接页面再次超出模拟器的宽度(因此获得的新页面再次不适合模拟器宽度)。
(2)我觉得这种完全贴合的方式并不好,因为我们已经采用了静态(插入)的大小,这不是一个好方法,例如,如果在各种版本的iPhone中测试设置然后它可能不完美。 我使用过这种方式,因为只有这样才能对我有用。我已经尝试了_webView.frame=self.view.bounds;
但运气不好。
有人可以帮助我实现目标吗?