我有一个按钮来分享屏幕截图给Facebook等等。
共享按钮:
ShareButton = UIButton.init(frame: CGRectMake(self.view!.frame.size.width/2 - 80,self.view!.frame.size.height/2 + 140 , 163, 54))
ShareButton.setImage(UIImage(named: "Share-Button.png"), forState: UIControlState.Normal)
ShareButton.addTarget(self, action: "shareButtonClicked:", forControlEvents: .TouchUpInside)
self.view!.addSubview(ShareButton)ShareButton func :
func shareButtonClicked(sender: UIButton!) {
UIGraphicsBeginImageContextWithOptions(view!.frame.size, false, 0.0)
view!.drawViewHierarchyInRect(view!.frame, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
let activityVC = UIActivityViewController(activityItems: [image], applicationActivities: nil)
let vc = self.view?.window?.rootViewController
//New Excluded Activities Code
if #available(iOS 9.0, *) {
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypeOpenInIBooks, UIActivityTypePostToTencentWeibo, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint]
} else {
// Fallback on earlier versions
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePostToTencentWeibo, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint ]
}
activityVC.popoverPresentationController?.sourceView = vc?.view
activityVC.popoverPresentationController?.sourceRect = ShareButton.frame
vc?.presentViewController(activityVC, animated: true, completion: nil)
}当我按下按钮时,我会在控制台中看到以下内容:
“其视图不在窗口层次结构中!”
什么都没发生。
什么在起作用:
不起作用的:
UIActivityViewContrller,让用户选择共享的位置发布于 2016-02-17 20:57:57
几天后,我自己解决了这个问题。
正确答案:
共享按钮:
ShareButton = UIButton.init(frame: CGRectMake(self.view!.frame.size.width/2 - 80,self.view!.frame.size.height/2 + 140 , 163, 54))
ShareButton.setImage(UIImage(named: "Share-Button.png"), forState: UIControlState.Normal)
ShareButton.addTarget(self, action: "pressedShareButton:", forControlEvents: .TouchUpInside)
self.view!.addSubview(ShareButton)ShareButton func :
func pressedShareButton(sender: UIButton!) {
UIGraphicsBeginImageContextWithOptions(view!.frame.size, false, 0.0)
view!.drawViewHierarchyInRect(view!.frame, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
let activityVC = UIActivityViewController(activityItems: [image], applicationActivities: nil)
//New Excluded Activities Code
if #available(iOS 9.0, *) {
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypeOpenInIBooks, UIActivityTypePostToTencentWeibo, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint]
} else {
// Fallback on earlier versions
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePostToTencentWeibo, UIActivityTypePostToVimeo, UIActivityTypePostToWeibo, UIActivityTypePrint ]
}
activityVC.popoverPresentationController?.sourceView = view
activityVC.popoverPresentationController?.sourceRect = ShareButton.frame
presentViewController(activityVC, animated: true, completion: nil)
print("Share!")
}它工作得很完美!祝大家好运!
发布于 2016-02-14 21:40:41
尝试设置activityController的起源:
activityVC.popoverPresentationController?.sourceView = vc?.view
activityVC.popoverPresentationController?.sourceRect = ShareButton.framehttps://stackoverflow.com/questions/35398162
复制相似问题