How to implement "share button" in Swift How to implement "share button" in Swift ios ios

How to implement "share button" in Swift


Swift 5:

    // Setting description    let firstActivityItem = "Description you want.."    // Setting url    let secondActivityItem : NSURL = NSURL(string: "http://your-url.com/")!        // If you want to use an image    let image : UIImage = UIImage(named: "your-image-name")!    let activityViewController : UIActivityViewController = UIActivityViewController(        activityItems: [firstActivityItem, secondActivityItem, image], applicationActivities: nil)        // This lines is for the popover you need to show in iPad    activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)        // This line remove the arrow of the popover to show in iPad    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.down    activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)        // Pre-configuring activity items    activityViewController.activityItemsConfiguration = [    UIActivity.ActivityType.message    ] as? UIActivityItemsConfigurationReading        // Anything you want to exclude    activityViewController.excludedActivityTypes = [        UIActivity.ActivityType.postToWeibo,        UIActivity.ActivityType.print,        UIActivity.ActivityType.assignToContact,        UIActivity.ActivityType.saveToCameraRoll,        UIActivity.ActivityType.addToReadingList,        UIActivity.ActivityType.postToFlickr,        UIActivity.ActivityType.postToVimeo,        UIActivity.ActivityType.postToTencentWeibo,        UIActivity.ActivityType.postToFacebook    ]        activityViewController.isModalInPresentation = true    self.present(activityViewController, animated: true, completion: nil)


This is how I implemented sharing with Swift 4/5 using a right button on the Navigation Controller. It includes an image, text and link.

SWIFT 4/5

On ViewDidLoad

 navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Share", style: .plain, target: self, action: #selector(share(sender:)))

Create the function

 @objc func share(sender:UIView){        UIGraphicsBeginImageContext(view.frame.size)        view.layer.render(in: UIGraphicsGetCurrentContext()!)        let image = UIGraphicsGetImageFromCurrentImageContext()        UIGraphicsEndImageContext()        let textToShare = "Check out my app"        if let myWebsite = URL(string: "http://itunes.apple.com/app/idXXXXXXXXX") {//Enter link to your app here            let objectsToShare = [textToShare, myWebsite, image ?? #imageLiteral(resourceName: "app-logo")] as [Any]            let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)            //Excluded Activities            activityVC.excludedActivityTypes = [UIActivity.ActivityType.airDrop, UIActivity.ActivityType.addToReadingList]            //            activityVC.popoverPresentationController?.sourceView = sender            self.present(activityVC, animated: true, completion: nil)        }    }


  @IBAction func shareButtonClicked(sender: AnyObject)    {        //Set the default sharing message.        let message = "Message goes here."        //Set the link to share.        if let link = NSURL(string: "http://yoururl.com")        {            let objectsToShare = [message,link]            let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)            activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList]            self.presentViewController(activityVC, animated: true, completion: nil)        }    }

This will allow you to present a UIActivityViewController to share a link and a message with any application that will accept them.