我需要在我的应用程序的一个视图控制器上设置一个Facebook共享按钮,这样当用户推送它时,它将共享用户当前屏幕的截图到Facebook。
我一直在观看一些关于如何实现Facebook共享按钮的教程:http://www.subdomain.domain.com
但这些只显示我如何在Facebook上分享信息,而且我仍然有点混淆如何分享用户当前正在与之交互的整个屏幕。
答案 0 :(得分:10)
直接与Facebook分享并不难。首先,导入Social
框架:
import Social
现在将此添加为按钮的操作:
let screen = UIScreen.mainScreen()
if let window = UIApplication.sharedApplication().keyWindow {
UIGraphicsBeginImageContextWithOptions(screen.bounds.size, false, 0);
window.drawViewHierarchyInRect(window.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
let composeSheet = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
composeSheet.setInitialText("Hello, Facebook!")
composeSheet.addImage(image)
presentViewController(composeSheet, animated: true, completion: nil)
}
您可能有兴趣知道UIActivityViewController
允许用户分享到Facebook以及其他服务。上面的代码是针对您的确切问题:与Facebook共享。此代码呈现整个可见屏幕;如果需要,您还可以自己渲染个人视图。
注意:正如Duncan C在下面的评论中指出的那样,此呈现代码不会包含应用程序之外的任何内容,例如其他应用程序或系统控件。
答案 1 :(得分:4)
在iOS 8及更早版本中,曾经有一个私有框架可用于捕获整个屏幕。使用该框架会导致您的应用程序被应用商店拒绝,但至少它有效。
从iOS 9开始,API不再有效
您可以做的最好的事情就是捕捉应用的观点。这不包括状态栏或系统或其他应用程序绘制的其他内容。
一种方法是创建一个离屏上下文,将要捕获的父视图渲染到屏幕外上下文中(可能使用drawViewHierarchyInRect:afterScreenUpdates:
,将数据从上下文加载到UIImage中,然后关闭背景。
另一种方法是新的API,它将捕获视图层次结构的快照。捕获快照的新方法之一是snapshotViewAfterScreenUpdates
。这会创建专门的快照视图。
答案 2 :(得分:1)
swift 3
echo "${check[@]}"
# or
declare -p check