Share para social o compartir con aplicaciones
func topViewController()-> UIViewController{
var topViewController:UIViewController = UIApplication.shared.keyWindow!.rootViewController!
while ((topViewController.presentedViewController) != nil) {
topViewController = topViewController.presentedViewController!;
}
return topViewController
}
func showShareActivity(msg:String?, image:UIImage?, url:String?, sourceRect:CGRect?){
var objectsToShare = [Any]()
if let url = url {
objectsToShare.append(url as Any)
}
if let image = image {
objectsToShare.append(image as Any)
}
if let msg = msg {
objectsToShare.append(msg as Any)
}
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.modalPresentationStyle = .popover
activityVC.popoverPresentationController?.sourceView = topViewController().view
if let sourceRect = sourceRect {
activityVC.popoverPresentationController?.sourceRect = sourceRect
}
topViewController().present(activityVC, animated: true, completion: nil)
}lista de tipos incluidos:
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIActivity_Class/#//apple_ref/doc/constant_group/Built_in_Activity_Types
-(void) shareContent: (UITapGestureRecognizer*) sender{
NSString *textToShare = NSLocalizedString(@"share_text", nil);
NSURL *linkToShare = [NSURL URLWithString:self.detailedNew.link];
NSArray *objectsToShare = @[textToShare, linkToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
SI SE QUIERE SE PUEDEN ANULAR OTROS COMO UIActivityTypePostToFacebook,
UIActivityTypePostToTwitter,
UIActivityTypeMessage,
UIActivityTypeCopyToPasteboard,
UIActivityTypeMail
NSArray *excludeActivities = @[UIActivityTypePrint,
UIActivityTypeAddToReadingList];
activityVC.excludedActivityTypes = excludeActivities;
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
activityVC.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityVC
animated:YES
completion:nil];
} else {
[self presentViewController:activityVC animated:YES completion:nil];
}
}