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

我想实现与本机邮件应用程序实现的相同的功能,即它在不缩小的情况下适合该宽度内的所有内容——本机邮件应用程序如何呈现这样的HTML?

使现代化

我原以为使用viewport meta标记会有所帮助,但我没法实现.

这就是正在发生的事情:

在此处输入图像描述

正如您所见,内容与设备宽度不匹配.我试过很多viewport元标签的组合.下面是我try 马丁斯建议时发生的一个例子.

原始HTML是here.

这个HTML的呈现方式是native mail application is like so.

推荐答案

以下是你要做的:

在拥有web视图的UI控制器中,将其设置为UIWebViewDelegate.

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:以正确设置zoom 级别:

This option will applicable from iOS 5.0 and >

- (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,你可以try 修改HTML(这个例子可以做到这一点,但从HTML解析的Angular 来看还不够完美.我只是想说明我的观点.它确实适用于你的例子,而且可能在大多数情况下都适用.40的插入可能可以通过编程方式检测到,我没有try 对此进行研究.

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];

Objective-c相关问答推荐

反编译ARM64和理解分支目标边界

如何在 NSImage CIFilter ObjC 周围创建边框

如何获取目标名称?

iphone 的 UIPopoverController 不工作?

将 NSInteger 变量传递给 NSMutableDictionary 或 NSMutableArray

为 iphone 应用程序设置自动构建服务器的最佳实践?

如何使用键值编码判断对象是否存在键?

为什么我们必须在 Objective-C 中做 [MyClass class]?

何时使用静态字符串与 #define

判断用户是否在连续的 UISlider 上完成滑动?

在 iOS 中创建带有 URL 的 UIImage

在 NSString 对象中查找子字符串

如何将小时数添加到 NSDate?

判断 NSNumber 是否为 NaN

UICollectionView 仅在用户双击时调用 didSelectItemAtIndexPath,当用户单击时不会调用

每个 ivar 都必须是一个属性吗?

iOS 10 中的错误:无法从 https://mesu.apple.com/assets/ 复制assets资源信息以获取assets资源类型

如何判断 NSString 的最后一个字符

如何根据按钮按下重新加载/刷新 UIPickerView(带有新数据数组)?

如何在对象内使用 objc_setAssociatedObject/objc_getAssociatedObject?