微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webview剪辑在ios7上

![在此处输入图像说明] [1]![在此处输入图像说明] [2] Hy,我开发了一个阅读器,在使用.css添加水平分页后,在webview上显示html文件内容.
一切都运行正常,但在ios7上,我注意到webview在左边缘被剪裁了
我尝试过以下方法

readingWebView.frame = CGRectMake(0,768,920);   
[readingWebView loadHTMLString:loadString baseURL:nil];
readingWebView.autoresizingMask = UIViewAutoresizingFlexibleHeight |        UIViewAutoresizingFlexibleWidth;
readingWebView.clipsToBounds = false;
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets = NO;

这个我拥有的css文件

html {
height:820px;
//margin:0px;
font-size:24px;
width:628px;
}

body {
margin:0px;
    padding:0px;
    width:628px;

}

#viewer {
    width:628px;
    height:820px;

}

#book {
width:628px;
height:820px;

margin-left:50px;
margin-right:50px;
//margin-top:100px;

-webkit-column-count:auto;
-webkit-column-width:668px;
-webkit-column-gap:140px;
text-align:justify;

 }

.h {
margin-top:8px;
 }

解决方法

我认为这是一个CSS问题.显然webkit有一些不同的文本剪辑问题,可以通过添加& nbsp;来解决.在任何文本行的末尾.剪切一个单词后直接.

您可以尝试修改一个html文件添加& nbsp;字母被剪裁后,看看它是否修复了?如果是这样,我们可以继续编写自动插入& nbsp;在正确的地方!

编辑:如果确实有效,请使用以下javascript代码

var bodyText = "هذا هو بلدي النص الأساسي.";
var newBodyText = bodyText.replace(" ","  ");

第二个想法,因为你是一个RTL字符串,你可能需要使用它,不知道string.replace函数如何处理RTL

var bodyText = "هذا هو بلدي النص الأساسي.";
var newBodyText = bodyText.replace(" ","  ");

编辑编辑:

要通过RegEx执行此操作(忽略HTML< *>脚本标记,在Objective-C中我相信您会使用此代码(我对RegEx知之甚少,所以如果它不起作用我只会打开一个新问题使用关于如何执行此操作的RegEx标记,他们可以在几分钟内得到答案!)).

Nsstring *string = originalHTMLString;

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?i)(<script(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</script\\s*>|<style(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</style\\s*>|<textarea(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</textarea\\s*>|</?[a-z](?:[^>\"']|\"[^\"]*\"]|'[^']*')*>|\\S+)|\\s+" options:NSRegularExpressionCaseInsensitive error:&error];
Nsstring *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0,[string length]) withTemplate:@"&nbsp; "];

finalHTMLString = modifiedString;

…再说一次,第二个想法,因为它是一种RTL语言,你实际上可以使用这种代码的变体,它将空间放在后面(从左到右):

Nsstring *string = originalHTMLString;

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?i)(<script(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</script\\s*>|<style(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</style\\s*>|<textarea(?:[^>\"']|\"[^\"]*\"]|'[^']*')*>)\s+</textarea\\s*>|</?[a-z](?:[^>\"']|\"[^\"]*\"]|'[^']*')*>|\\S+)|\\s+" options:NSRegularExpressionCaseInsensitive error:&error];
Nsstring *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0,[string length]) withTemplate:@" &nbsp;"];

finalHTMLString = modifiedString;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐