iOS 앱에서 UIActivityViewController 구현 방법: Swift로 Share Sheet 만들기
iOS 앱에서 UIActivityViewController 구현 방법: Swift로 Share Sheet 만들기
iOS 앱에서 데이터를 공유하는 기능은 사용자 경험을 크게 향상시킬 수 있습니다. 이를 쉽게 구현할 수 있는 방법 중 하나가 UIActivityViewController
를 이용한 Share Sheet입니다. 이 글에서는 Swift를 사용하여 UIActivityViewController
를 통해 Share Sheet를 만드는 방법을 단계별로 알아보겠습니다.
UIActivityViewController 소개
UIActivityViewController
는 iOS에서 기본적으로 제공하는 공유 시트로, 다양한 활동(액티비티)에 콘텐츠를 제공할 수 있습니다. 예를 들어, 텍스트, URL, 이미지 등을 이메일, 메시지, 소셜 미디어 등으로 쉽게 공유할 수 있습니다. UIActivityViewController
는 사용하기 쉽고 직관적인 사용자 인터페이스를 제공합니다.
UIActivityViewController 설정하기
먼저, Share Sheet를 구현하기 위해서 UIActivityViewController
를 생성하고 설정하는 방법을 알아보겠습니다. 다음은 Swift 코드로 간단한 예제를 작성한 것입니다.
swiftimport UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func shareButtonTapped(_ sender: UIButton) { let textToShare = "Hello, World!" let items = [textToShare] let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil) present(activityViewController, animated: true, completion: nil) } }
위 코드에서는 공유할 텍스트를 배열로 묶어 activityItems
로 전달하고, UIActivityViewController
를 생성합니다. 이를 뷰 컨트롤러에서 프레젠트하여 Share Sheet를 보여줍니다.
다양한 사용 사례
UIActivityViewController
는 텍스트뿐만 아니라 URL, 이미지 등을 공유할 수 있습니다. 각기 다른 유형의 예제를 살펴보겠습니다.
텍스트 공유하기
텍스트를 공유하는 것은 간단합니다. 위 예제에서와 같이 문자열을 배열로 묶어 전달하면 됩니다.
swiftlet textToShare = "This is a sample text." let activityViewController = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil)
URL 공유하기
URL을 공유할 때는 URL
객체를 생성하여 배열에 추가합니다.
swiftif let url = URL(string: "https://www.example.com") { let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil) }
이미지 공유하기
이미지는 UIImage
객체를 사용하여 공유할 수 있습니다.
swiftif let image = UIImage(named: "exampleImage") { let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil) }
텍스트, URL, 이미지 함께 공유하기
여러 개의 데이터를 함께 공유할 수도 있습니다. 배열에 다양한 객체를 추가하면 됩니다.
swiftlet textToShare = "Check this out!" let urlToShare = URL(string: "https://www.example.com") let imageToShare = UIImage(named: "exampleImage") let itemsToShare = [textToShare, urlToShare as Any, imageToShare as Any] let activityViewController = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil) present(activityViewController, animated: true, completion: nil)
커스터마이징
UIActivityViewController
는 여러 가지 커스터마이징이 가능합니다. 예를 들어, 특정 앱으로의 공유를 제외하거나, 컴플리선 핸들러를 설정할 수 있습니다.
특정 앱 제외하기
excludedActivityTypes
속성을 사용하여 특정 활동 유형을 제외할 수 있습니다.
swiftlet activityViewController = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil) activityViewController.excludedActivityTypes = [.postToFacebook, .postToTwitter]
이렇게 하면 Facebook과 Twitter로의 공유가 제외됩니다.
완료 핸들러 설정하기
공유 동작이 완료된 후에 특정 작업을 수행하려면 completionWithItemsHandler
를 설정할 수 있습니다.
swiftactivityViewController.completionWithItemsHandler = { activity, completed, items, error in if completed { print("Sharing successful!") } else { print("Sharing canceled.") } }
결론
이 글에서는 iOS 앱에서 UIActivityViewController
를 사용하여 Share Sheet를 구현하는 방법을 살펴보았습니다. 텍스트, URL, 이미지 등 다양한 콘텐츠를 손쉽게 공유할 수 있으며, 커스터마이징을 통해 사용자 경험을 더욱 향상시킬 수 있습니다. UIActivityViewController
를 잘 활용하면 앱의 경쟁력을 높일 수 있을 것입니다.