在使用图片发布到Facebook之前,我使用以下代码捕获屏幕截图:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(frame.size.width,frame.size.height), false, 0)
self.view?.drawViewHierarchyInRect(CGRectMake(-frame.origin.x, -frame.origin.y, view.bounds.size.width, view.bounds.size.height), afterScreenUpdates: false)
let screenShot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return screenShot
在第一个实例中,我使用Social Framework
和SLComposeViewController
将屏幕截图添加到addImage
。对话框和终极帖子上的图片都很完美,但这种方法不允许你选择你的朋友。
然后我决定使用use FBSDKDialog
,如下所示:
let photo : FBSDKSharePhoto = FBSDKSharePhoto()
photo.image = screenShot
photo.userGenerated = false
photo.caption = contentDescription
let photoContent : FBSDKSharePhotoContent = FBSDKSharePhotoContent()
photoContent.photos = [photo]
photoContent.contentURL = NSURL(string: self.contentURL)
let shareDialog = FBSDKShareDialog()
shareDialog.fromViewController = self
shareDialog.shareContent = photoContent
shareDialog.delegate = self
if !shareDialog.canShow() {
shareDialog.mode = FBSDKShareDialogMode.Native
} else {
shareDialog.mode = FBSDKShareDialogMode.FeedBrowser
}
shareDialog.show()
代码工作正常,但共享对话框中的图像质量非常差。然而,当我确实发布时,时间线上的图像质量是完美的。
我试图压缩图像,但似乎没有任何区别。 任何人都可以建议我做错了什么? 谢谢。
答案 0 :(得分:0)
你没有做错任何事。这可能是Facebook优化分享的一种方式。