[swift] PeekPop 기능을 활용해 앱 내 더 많은 컨텐츠 노출하는 방법

PeekPop

애플의 PeekPop 기능은 사용자가 화면에서 손가락을 놓을 때 더 많은 정보를 볼 수 있게 해주는 강력한 기능입니다. 앱 내에서 PeekPop을 활용하여 더 많은 컨텐츠를 노출하는 방법을 알아보겠습니다.

1. PeekPop 설정

PeekPop을 사용하려면 우선 ViewController에서 다음과 같이 PeekPopGestureRecognizer를 추가해야 합니다.

let peekPopGestureRecognizer = PeekPopGestureRecognizer()

override func viewDidLoad() {
    super.viewDidLoad()
  
    peekPopGestureRecognizer.registerForPreviewing(with: self, sourceView: view)
}

다음으로, ViewController에서 PeekPopDelegate 프로토콜을 준수하도록 설정해야 합니다.

extension ViewController: PeekPopDelegate {
    // PeekPopDelegate 메서드 구현
}

2. 컨텐츠 노출하기

PeekPop을 사용하여 컨텐츠를 노출하기 위해서는 다음과 같이 PeekPopDelegate 메서드를 구현해야 합니다.

func previewingContext(_ previewingContext: PreviewingContext, viewControllerForLocation location: CGPoint) -> UIViewController? {
    // Peek 시 노출할 컨텐츠의 뷰 컨트롤러를 반환하는 로직 작성
}

func previewingContext(_ previewingContext: PreviewingContext, commit viewControllerToCommit: UIViewController) {
    // Peek 상태에서 사용자가 컨텐츠를 선택할 경우, 해당 컨텐츠를 커밋하는 로직 작성
}

위의 메서드 중에서 previewingContext(_:viewControllerForLocation:) 메서드는 PeekPop을 사용하여 컨텐츠를 노출할 때 뷰 컨트롤러를 반환하는 역할을 합니다. 해당 메서드에서 컨텐츠가 포함된 뷰 컨트롤러를 생성하고 반환하는 로직을 작성해야 합니다.

또한, previewingContext(_:commit:) 메서드는 사용자가 Peek 상태에서 컨텐츠를 선택할 경우 호출되는 메서드입니다. 해당 메서드에서는 선택한 컨텐츠를 실제로 호출하거나 화면 전환을 처리하는 로직을 작성해야 합니다.

3. PeekPop 사용하기

PeekPop 기능을 사용하기 위해선, 미리 정의된 액션을 파악하여 PeekPop 기능을 사용해야 합니다. ViewController에서 다음과 같은 메서드를 구현하면 됩니다.

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)

    if traitCollection.forceTouchCapability == .available {
        peekPopGestureRecognizer.peekPopEnabled = true
    } else {
        peekPopGestureRecognizer.peekPopEnabled = false
    }
}

위의 코드는 기기에서 PeekPop을 지원하는 경우 PeekPop을 활성화하고, 그렇지 않은 경우 비활성화하는 역할을 합니다.

PeekPop은 사용자에게 더 많은 컨텐츠를 제공하는 강력한 기능입니다. 앱 내에서 PeekPop을 활용하여 사용자에게 더 풍부한 경험을 제공할 수 있습니다. 이를 통해 사용자들은 빠르게 컨텐츠를 미리 확인하고, 선택적으로 상세 정보를 볼 수 있게 됩니다.

더 자세한 내용은 애플 개발자 문서를 참조하여 확인할 수 있습니다.

참조: Apple - 3D Touch