iOS7 上的 Webview 被剪裁

2023-12-25

我开发了一个阅读器,在使用 .css 添加水平分页后,它可以在 web 视图上显示 html 文件的内容。一切工作正常,但在 iOS7 上,我注意到 web 视图在左边缘被剪裁。

我已经尝试过以下方法:

readingWebView.frame = CGRectMake(0, 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 有一些不同的文本剪切问题,只需添加即可解决 在任何文本行的末尾。直接在一个单词被剪辑之后。

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


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

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

再想一想,由于您是 RTL 字符串,您可能需要使用它,但不确定如何string.replace函数处理 RTL

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

编辑编辑:

要通过 RegEx 来做到这一点(忽略 HTML script 标签,在 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 语言,所以您实际上可以使用代码的这种变体,将 nbsp 放在空格之后(从左到右):

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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS7 上的 Webview 被剪裁 的相关文章

  • 如何更改某些功能以兼容 iOS 10 或更低版本的 Snapchat 中的某些功能,例如相机视图控制器

    我正在制作一个视图控制器来制作像 snapchat 相机一样的相机视图控制器 我下面的代码在 iOS 11 或更高版本上完美运行 老实说 我并没有真正掌握我的代码 因为我只是按照这个像相机视图控制器这样的 snapchat 的教程进行操作
  • NSNotification 与dispatch_get_main_queue

    和 关联这个问题 https stackoverflow com questions 7905192 iphone grand central dispatch main thread我想知道关于何时使用 NSNotification 在主
  • Xcode - 免费清除设备文件夹?

    我正在删除一些文件夹和文件 以便在驱动器上腾出更多空间 我知道在路径中 Library Developer CoreSimulator Devices 每个模拟器和每个版本都有文件夹 这个文件夹对我来说大约有 11GB 大小 我知道我可以删
  • 如何为 App Store 添加关联域? - App Store Connect 的 app-ads.txt 文件

    如您所知 Admob 向发布商发送了有关 app ads txt 文件的电子邮件 Admob 在电子邮件中表示 因此 我们邀请您仔细检查您的 app ads txt 文件 如果 您已经在发布日期之前发布了一份 文件 应发布在列出的网站的根目
  • UIView 子类中使用的 CAShapeLayer 不起作用

    我尝试了几个小时 用 CAShapeLayer 在 UIView 周围获得虚线边框 但我没有显示它 ScaleOverlay h import
  • 播放声音无延迟 iOS

    我找不到如何以低延迟播放真实声音的方法 我尝试使用 AVFoundation 音频播放器 巨大的延迟大约 500 毫秒 所以我尝试创建系统声音 如果运气不好 延迟大约为 200 毫秒 虽然不多 但对我来说没有用 我最多需要 50 毫秒 确保
  • CloudKit 获取当前用户的所有订阅

    我设法在 Apple CloudKit 中保存 更改和删除记录 我什至收到了与订阅相关的通知 但我不知道如何列出当前用户的所有订阅 到目前为止 这是我的代码 let operation CKFetchSubscriptionsOperati
  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • 将 NSDate 转换为 SWIFT 中具有特定时区的字符串

    在我的核心数据库中 我有一个带有 NSDate 属性的 新闻 实体 我的应用程序遍布全球 新闻已发布2015 09 04 22 15 54 0000法国时间 GMT 2 为了保存日期 我将其转换为 UTC 格式 let mydateForm
  • 使用 NSJSONSerialization 解析 JSON

    对此进行了太多讨论 但我不知道如何解决我的问题 这是我从 WorldWeatherOnline 获取的 JSON 数据 JSON 有效 但我不知道如何解析它 这是我的代码 后面是 JSON 请帮忙 NSError errorInfo NSD
  • ios 8 opengl es 1.1 已停产?

    我们即将在 iOS 应用商店上推出一款游戏 最近我们发现它无法在 iOS 8 上运行 游戏加载到黑屏 但其他一切似乎都可以运行 可以听到音乐 对触摸屏有反应 但显示屏上没有任何反应 我们的引擎相当旧并且使用 OpenGL ES 1 1 我现
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • NSPredicate 查询不包含特定字符串

    对这个问题进行了高低查找 但找不到我的答案 我正在查询核心数据以查找不等于指定字符串的所有记录 例如 所有不等于当前会话ID的记录 我已经尝试过这些但无济于事 NSPredicate predicate NSPredicate predic
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • 从后台唤醒时应用程序会重新启动

    iOS 大师您好 我已经广泛搜索了答案 但找不到答案 我打赌对我的问题的第一个答复将是另一个类似的问题 但我找不到它 不管怎样 我的问题是我正在运行一个简单的地图应用程序 用户可以在地图上放置图钉 并在放置的图钉周围有一个自定义的圆圈覆盖
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • 支持 iOS6 和 iOS7 的启动屏幕 - 强制闪屏

    当谈到启动屏幕时 我找不到一种统一的方法来模仿 iOS6 和 iOS7 支持两者 上的应用程序的外观 如果我们有工具栏菜单 我们是否被迫制作徽标或类似的常规启动屏幕 或者你们有什么好主意如何解决它 简短回答 在 iOS 7 中 应用程序可以

随机推荐

  • 如何更改启动的默认 xcode 版本...?

    我的电脑上安装了 xcode 3 2 和 4 0 版本 但我的问题是每当我打开一个项目时 它都会以 xcode 3 2 打开 虽然我可以选择使用 open with gt xcode 4 0 打开我的项目 但我想将默认的 Xcode 更改为
  • h:selectOneMenu 与布尔项不适用于空值

    我正在使用 JSF 2 0 JBoss 7 1 1 Final 并且我在 selectOneMenu 方面遇到以下问题 我希望能够将托管 bean 中的字段设置为 true false null 因此 我创建了以下 selectOneMen
  • 无法使用python在谷歌驱动器上上传大文件

    我正在尝试使用以下代码通过 Google API 将文件上传到 Google 云端硬盘 import httplib2 from apiclient import discovery from httplib2 import Http fr
  • MongoDB 列表 - 获取每第 N 个项目

    我有一个 Mongodb 架构 大致如下 name name1 instances value 1 date ISODate 2015 03 04T00 00 00 000Z value 2 date ISODate 2015 04 01T
  • 定义一个返回结构体指针的函数

    请耐心听我说 我是其他语言的新手 也是 c 语言的新手 正在学习它http c learncodethehardway org book learn c the hard way html http c learncodethehardwa
  • 从 where 子句中给定的集合中选择表中不存在的 ID

    我有一组用户 ID 512 5 13 14 67 和一个包含以下内容的表 Id userID 1 512 2 13 3 14 4 51 5 6 该集中的一些用户 ID 并不存在于表中 例如 用户身份5和用户 ID64不存在 当我执行时Sel
  • 按位 NOT 的奇怪输出

    我试图用 0 的补码得到 1 但我得到 4294967295 这是我所做的 unsigned int x 0 unsigned int y x cout lt lt y 我的输出是 4294967295 但我期望 1 为什么会这样 顺便说一
  • 如何将扫描仪输入放入数组中......例如几个数字

    Scanner scan new Scanner System in double numbers scan nextDouble double avg 你可以尝试这样的事情 public static void main String a
  • VS 2005 C++ 项目中的 msvcr90.dll 依赖项

    我在 VS 2005 中为本机 Win32 非托管 C 创建了一个 DLL 项目 将其命名为 myProj dll 它依赖于第 3 方商业 DLL 而该 DLL 又依赖于 msvcr90 dll 我假设它是从 VS 2008 项目构建的 我
  • 如何在Excel中计算分钟和秒的平均值

    B 列中的原始数据各占一个新行 如下所示 5 04 3 57 0 58 10 01 的左边 是 的分钟和右边 是秒 我需要计算我的数据的平均值 我该怎么办 您需要转换为真实时间 一种选择是使用TIME并解析原始数据 在新列中 使用 TIME
  • 时间 - 获取昨天的日期

    我正在尝试使用 Python 获取今天和昨天的时间time模块 这对我来说适用于今天的日期 dt time strptime time strftime d m Y d m Y 但我不知道如何获得昨天的日期 我发现了很多教程datetime
  • 向空对象添加属性

    我有这个代码 var MY OBJ MY OBJ test function 我正在使用 Vscode 我得到属性测试未定义 我怎么能让这只是一个警告 定义你的对象有一个test财产 var MY OBJ test Function MY
  • 每次服务器重新启动后端口“已在使用”

    寻求有关特殊问题的帮助 每次我停止并重新启动服务器时 我都会收到以下消息 Jim Jim PC MINGW64 nodeProjects express locallibrary tutorial npm start gt email pr
  • React 标签和按钮 onClick 传播

    我想创建一个带有 render 方法的 React 组件 该方法具有 a 如果您愿意的话 可以包裹整个 盒子 的标签 单击后会重定向到另一个页面 在所述盒子内有一个 a
  • spring自动装配aop循环依赖

    我正在使用 java 配置 ComponentScan为了初始化我的bean 和 EnableAspectJAutoProxy proxyTargetClass true 使用 cglib 代理 在这个项目中 我们有很多生成的服务 它们之间
  • 服务器标记在 asp 控件内不起作用

    好吧 让这快点 我想在更改或页面加载时动态设置日历扩展器的开始和结束日期 这些值被放入 ascx 上的隐藏字段中 并在页面加载期间在 if not postback 中填充 一组日历扩展器位于网格视图的项目模板字段中 称为set A 其他的
  • 使用钢琴键盘作为电脑键盘[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 I
  • Visual Studio 2015 错误。项目的默认 XML 命名空间必须是 MSBuild XML 命名空间

    让我用 是的 我见过类似的问题 但不完全是我的情况 作为问题的开头 我的环境是 Microsoft Visual Studio Professional 2015 版本 14 0 25431 01 更新3 我的行动 我创建一个新的 C 类库
  • java.io.IOException:管道损坏

    我们目前正在将遗留应用程序迁移到 Jetty 不知怎的 我对破损的管道有一个例外 Java 6 码头8 1 8 春季3 2 0 我正在尝试将 Glassfish Web 应用程序迁移到 Jetty 在我们的测试环境中 我们使用负载平衡器 一
  • iOS7 上的 Webview 被剪裁

    我开发了一个阅读器 在使用 css 添加水平分页后 它可以在 web 视图上显示 html 文件的内容 一切工作正常 但在 iOS7 上 我注意到 web 视图在左边缘被剪裁 我已经尝试过以下方法 readingWebView frame