UIActivityViewController

hoBahk·2022년 2월 20일
1
post-thumbnail

안녕하세요.

오늘은 UIActivityViewController에 대해서 공부해 보려고 합니다!

UIActivityViewController란?

UIActivityViewController가 무엇일까요?

보통은 공유버튼을 누르게 되면 뜨는 화면이죠!

앱의 표준서비스?를 제공하는데 사용하는 뷰컨트롤러라고 하네요!
SNS의 컨텐츠를 올리거나 email, SMS보내기, copy 등 여러 표준서비스를 제공할 때 사용합니다.

예제코드

바로 코드로 보겠습니다.

let activityViewController = UIActivityViewController(
    activityItems: data, // [Any] 타입
    applicationActivities: nil
)
self.present(activityViewController, animated: true, completion: nil)

UIActivityViewController의 인스턴스를 만들어주고 그 인스턴스를 present 해주면 됩니다.
activityItems에는 보내줄 데이터를 넣어줍니다. 배열로 넣어줘야 합니다.
applicationActivities는 사용자 지정 서비스를 나타내는 UIActivity의 배열입니다.

iPad

iPad에서는 위의 코드처럼만 해주면 오류가 납니다.
iPad에서는 popover형태로 위치와 크기를 지정해서 사용해야 합니다.
그래서 popover 형식으로 ActivityViewController을 띄워주어야 합니다.
ActionSheet 등도 동일하게 popover 형태로 뷰를 띄워주어야합니다!!

예제코드 for iPad

그럼 popover는 어떻게 사용하여야 할까요?
아래 코드와 같이 사용하면 됩니다.

if let popoverController = activityViewController.popoverPresentationController {
    popoverController.sourceView = splitViewController?.view
    popoverController.sourceRect = CGRect(
        x: splitViewController?.view.bounds.midX ?? .zero,
        y: splitViewController?.view.bounds.midY ?? .zero,
        width: .zero,
        height: .zero
    )
    popoverController.permittedArrowDirections = []
    let splitViewController = self.splitViewController as? SplitViewController
    splitViewController?.popoverController = popoverController
}
self.present(activityViewController, animated: true, completion: nil)

activityViewController의 popoverPresentationController를 사용하여 sourceView(액티비티뷰를 띄울 뷰)를 설정하고, sourceRect(위치, 크기)를 지정해줍니다.
permittedArrowDirections는 popover를 허용하는 화살표 방향?을 뜻한다고 합니다. up, down, left, right등이 있는데 빈배열로 놓고 sourceRect로 위치를 조정해주면 됩니다.

감사합니다!

profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글