为什么webView不完全适合XCODE模拟器

时间:2016-04-19 16:14:27

标签: ios objective-c uiwebview

这是我第一次接触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;但运气不好。

有人可以帮助我实现目标吗?

0 个答案:

没有答案