[iOS] UIActivityItemSource

Seonhu Kim·2023년 4월 9일
0

iOS

목록 보기
13/16
post-thumbnail

이전에 공유하기 화면을 띄우는 UIActivityViewController를 알아보았다. 만약, 해당 화면의 썸네일과 타이틀 서브타이틀을 커스터마이징 하고 싶다면, UIActivityItemSource를 채택하여 공유하려는 항목의 프리뷰를 설정할 수 있다.

class ActivityItemSource: NSObject, UIActivityItemSource {
    let title: String
    let thumbnail: UIImage
    
    init(title: String, thumbnail: UIImage) {
        self.title = title
        self.thumbnail = thumbnail
    }
    
    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return ""
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
        return ""
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
        return title
    }
    
    func activityViewController(_ activityViewController: UIActivityViewController, thumbnailImageForActivityType activityType: UIActivity.ActivityType?, suggestedSize size: CGSize) -> UIImage? {
    	return thumbnail
    }
    
@available(iOS 13.0, *)
func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
   let metadata = LPLinkMetadata()
   metadata.title = title
   metadata.imageProvider = NSItemProvider(contentsOf: tumbnail)
   return metadata
}

위와 같은 클래스 파일을 하나 만들고, 공유하기가 필요한 ViewController에서 다음과 같이 사용할 수 있다.

let title = "My Title"
let thumbnail = UIImage(named: "myImage")
let activityItemSource = MyActivityItemSource(title: title, thumbnail: thumbnail!)
let activityViewController = UIActivityViewController(activityItems: [activityItemSource], applicationActivities: nil)
profile
iOS Developer.

0개의 댓글