Webkit 与 SFSafariViewController 和核心数据
Webkit vs SFSafariViewController and Core Data
应用程序内网络浏览器的首选方法是什么?我的应用程序需要在底部有一个工具栏,我需要能够通过点击工具栏上的按钮来截取访问过的网页。
这就是我 运行 喜欢的内容。我希望能够在我的应用程序中单击 link,打开应用程序内浏览器,截取屏幕截图,然后保存到核心数据以及有关该网站的其他信息。
我可以使用 Webkit 的 .takesnapshot() 方法将屏幕截图保存到相机胶卷。我一直无法将其保存到核心数据中。截至昨晚,我在 SO 上发现了一些功能,它们展示了如何截取 UIView 和 return UIImage 的屏幕截图,但我无法将其转换回数据,因为这是核心数据需要二进制数据。有没有人有好的资源将 Webkit 快照保存到 Core Data?
在我昨晚尝试的其中一个函数中,我能够 return UIImage 对象,但我无法将其转换回 Data。我可以将有关站点的所有其他数据保存到 Core Data,但我无法保存图像 - 事实上,当我尝试使用 Webkit 的 .takesnapshot() 方法直接保存数据时,结果为零。
我将分两部分回答你的问题。
WebKit 与 SFSafariViewController
如果你想要一个带有截图按钮的自定义工具栏,我会使用带有自定义标签栏的 UIViewController
,你可以在其中添加任何你想要的按钮,然后我还会嵌入一个 WebKit
也在视图控制器中查看。这应该很简单。
正在将屏幕截图保存到 Core Data
听起来,您可能以错误的方式截取屏幕截图,您希望使用图形开始和结束图像上下文来执行此操作,如下所示:
let layer = UIApplication.shared.keyWindow!.layer
let scale = UIScreen.main.scale
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale)
layer.render(in: UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
现在您的 screenshot
变量中已保存为 UIImage?
的屏幕截图。接下来,您应该将其转换为数据:
let data = UIImagePNGRepresentation(screenshot!)
这应该为您提供图像的数据表示,然后您可以将其保存到 Core Data。
应用程序内网络浏览器的首选方法是什么?我的应用程序需要在底部有一个工具栏,我需要能够通过点击工具栏上的按钮来截取访问过的网页。
这就是我 运行 喜欢的内容。我希望能够在我的应用程序中单击 link,打开应用程序内浏览器,截取屏幕截图,然后保存到核心数据以及有关该网站的其他信息。
我可以使用 Webkit 的 .takesnapshot() 方法将屏幕截图保存到相机胶卷。我一直无法将其保存到核心数据中。截至昨晚,我在 SO 上发现了一些功能,它们展示了如何截取 UIView 和 return UIImage 的屏幕截图,但我无法将其转换回数据,因为这是核心数据需要二进制数据。有没有人有好的资源将 Webkit 快照保存到 Core Data?
在我昨晚尝试的其中一个函数中,我能够 return UIImage 对象,但我无法将其转换回 Data。我可以将有关站点的所有其他数据保存到 Core Data,但我无法保存图像 - 事实上,当我尝试使用 Webkit 的 .takesnapshot() 方法直接保存数据时,结果为零。
我将分两部分回答你的问题。
WebKit 与 SFSafariViewController
如果你想要一个带有截图按钮的自定义工具栏,我会使用带有自定义标签栏的 UIViewController
,你可以在其中添加任何你想要的按钮,然后我还会嵌入一个 WebKit
也在视图控制器中查看。这应该很简单。
正在将屏幕截图保存到 Core Data
听起来,您可能以错误的方式截取屏幕截图,您希望使用图形开始和结束图像上下文来执行此操作,如下所示:
let layer = UIApplication.shared.keyWindow!.layer
let scale = UIScreen.main.scale
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale)
layer.render(in: UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
现在您的 screenshot
变量中已保存为 UIImage?
的屏幕截图。接下来,您应该将其转换为数据:
let data = UIImagePNGRepresentation(screenshot!)
这应该为您提供图像的数据表示,然后您可以将其保存到 Core Data。