Skip to content

Commit

Permalink
add sharing to UIViewController
Browse files Browse the repository at this point in the history
  • Loading branch information
ConfusedVorlon committed Apr 10, 2021
1 parent 0ee8823 commit cb5c239
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions Sources/HSUIKit/UIViewController+Share.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
//
// File.swift
//
//
// Created by Rob Jonson on 10/04/2021.
//

#if canImport(UIKit) && !os(watchOS)

import Foundation
import UIKit

public extension UIViewController {

@objc
func share(items:[ShareItem],sourceView:UIView? = nil,permittedArrowDirections:UIPopoverArrowDirection = []) {

guard let view = sourceView ?? self.view else {
return
}

let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)

if let popoverPC = activityViewController.popoverPresentationController {
popoverPC.sourceView = view
popoverPC.sourceRect = view.bounds
popoverPC.permittedArrowDirections = permittedArrowDirections
}

self.present(activityViewController, animated: true)

}
}

@objc
public class ShareItem: NSObject, UIActivityItemSource {

private let subject:String
private let item:Any

public init(subject: String, item: Any) {
self.subject = subject
self.item = item

super.init()
}

public func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return item
}

public func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return item
}

public func activityViewController(_ activityViewController: UIActivityViewController,
subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return subject
}
}

#endif

0 comments on commit cb5c239

Please sign in to comment.