Swift/UIViewController

[SWIFT]UIActivityViewController 공유하기

삽질중 2023. 10. 26. 13:04
let shard_link_url = URL(string: linkUrl)

let shareAll:[Any] = [title , shard_link_url!]

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

//공유하기에서 제외할 타입
activityViewController.excludedActivityTypes = [.airDrop, .print, .copyToPasteboard, .assignToContact, .saveToCameraRoll]

DispatchQueue.main.async {
    guard let topVC = UIApplication.currentTopViewController() else {
        return
    }
    
    activityViewController.popoverPresentationController?.sourceView = topVC.view
    
    if UIDevice.isiPad() {
        
        // 아이패드의 경우 중앙에 뜨게 설정
        activityViewController.popoverPresentationController?.permittedArrowDirections = []
        activityViewController.popoverPresentationController?.sourceRect = topVC.view.bounds
        activityViewController.popoverPresentationController?.sourceRect = CGRect(x: topVC.view.bounds.midX, y: topVC.view.bounds.midY, width: 0, height: 0)
        // activityViewController.popoverPresentationController?.sourceRect = CGRect(x: UIScreen.main.bounds.width - 200, y: 0, width: 200, height: 30)
        
    } else {
        activityViewController.modalPresentationStyle = .fullScreen
    }
    
    activityViewController.completionWithItemsHandler = { (activityType: UIActivity.ActivityType?, completed: Bool, arrayReturnedItems: [Any]?, error: Error?) in
        
        log(direction: .ETC, ofType: self, datas: "UIActivityViewController", activityType, completed, arrayReturnedItems, error)
    }
    
    topVC.present(activityViewController, animated: true, completion: nil)
}