iphone - HTML 内容适合 UIWebview 而无需缩小

标签 iphone objective-c uiwebview

我正在使用 UIWebView 来呈现一些 HTML。然而,虽然我的 webview 的宽度是 320,但我的 HTML 仍然显示为全宽并且可以水平滚动。

我想实现与 native 邮件应用程序相同的功能,即它适合该宽度内的所有内容而不缩小 - native 邮件应用程序如何呈现这样的 HTML?

更新

我认为使用视口(viewport)元标记会有所帮助,但我无法让它发挥作用。

这是正在发生的事情:

enter image description here

如您所见,内容不适合设备宽度。我已经尝试了很多 viewport 元标记的组合。以下是我尝试 Martins 建议时发生的示例。

可以找到原始 HTML here .

native mail application is like so 渲染此 HTML 的方式.

最佳答案

这就是你要做的:

在拥有 Web View 的 UI Controller 中,将其设为 UIWebViewDelegate。 然后在设置要加载的 URL 的地方,将委托(delegate)设置为 Controller :

NSString *urlAddress = @"http://dl.dropbox.com/u/50941418/2-build.html";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];  
webView.delegate = self;

最后实现 webViewDidFinishLoad: 来正确设置缩放级别:

此选项适用于 iOS 5.0 和 >

- (void)webViewDidFinishLoad:(UIWebView *)theWebView
{
  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;  
}

我希望这会有所帮助...

选项 B,您可以尝试更改 HTML(此示例可以完成工作,但从 HTML 解析的角度来看并不完美。我只是想说明我的观点。它确实适用于您的示例,并且可能适用于大多数情况。 40 的插图可能可以通过编程方式检测到,我没有尝试研究。

NSString *urlAddress = @"http://dl.dropbox.com/u/50941418/2-build.html";
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 = 40;
  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];

关于iphone - HTML 内容适合 UIWebview 而无需缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666484/

相关文章:

ios - 使用 NSRange 获取子字符串

objective-c - 值得学习的编写良好的开源 Cocoa 应用程序?

ios - 将 UIWebView 添加到 UIViewController 给我一个白屏。我究竟做错了什么?

IOS Swift,如何检测文件上传点击UIWebView内部打开照片上传对话框

ios - 让推送像现在一样生动

objective-c - iOS UIWebView - 陷阱异常加载无效文件格式

iphone - Core Data 对只读数据也有用吗?

iphone - iOS View 演示文稿

iphone - 当用户不响应推送通知时会发生什么?

iphone - 如何在 UINavigationController 中正确继承 UITableViewController?