[swift] PeekPop을 이용한 음악 재생 앱의 미리보기 및 제어 기능 구현 방법

peekpop

PeekPop은 iOS에서 제공하는 기능 중 하나로, 사용자가 앱 아이콘을 피크(Peek)하거나 Pop하면 해당 아이템의 미리보기를 제공하는 기능입니다. 이 기능을 활용하여 음악 재생 앱의 미리보기 및 제어 기능을 구현해보겠습니다.

1. PeekPop 설정

PeekPop을 사용하기 위해선 먼저 프로젝트에 PeekPop 프레임워크를 추가해야 합니다. Xcode에서 다음과 같은 단계를 따라 프레임워크를 추가해주세요.

  1. 프로젝트 파일을 선택한 후 Build Phases 탭으로 이동합니다.
  2. Link Binary With Libraries 영역에서 + 버튼을 클릭합니다.
  3. 팝업창에서 PeekPop.framework를 검색하고 선택한 후 Add 버튼을 클릭합니다.

이제 프로젝트에 PeekPop이 성공적으로 추가되었습니다.

2. 미리보기 컨트롤러 생성

음악 재생 미리보기를 위한 컨트롤러를 생성합니다. 이 컨트롤러를 통해 미리보기 내용을 구성하고 제어할 수 있습니다.

import PeekPop

class MusicPreviewViewController: UIViewController, PeekPopPreviewingDelegate {
    
    // 미리보기에 표시할 음악 정보 및 컨트롤 버튼
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 미리보기 내용 구성
    }
    
    // PeekPop 미리보기 델리게이트 메소드 구현
    
    func previewingContext(_ previewingContext: PreviewingContext, viewControllerForLocation location: CGPoint) -> UIViewController? {
        // 미리보기 컨트롤러 인스턴스 반환
    }
    
    func previewingContext(_ previewingContext: PreviewingContext, commit viewControllerToCommit: UIViewController) {
        // 미리보기 컨트롤러를 풀스크린으로 전환하여 보여줌
    }
}

MusicPreviewViewController 클래스는 PeekPopPreviewingDelegate 프로토콜을 채택하여 PeekPop의 미리보기 동작을 컨트롤할 수 있습니다. viewDidLoad 메소드에서 미리보기 내용을 구성하고, previewingContext(_:viewControllerForLocation:) 메소드에서 미리보기 컨트롤러 인스턴스를 반환합니다. 마지막으로 previewingContext(_:commit:) 메소드에서 미리보기 컨트롤러를 풀스크린으로 전환하여 보여줍니다.

3. PeekPop 설정 및 뷰 컨트롤러에 미리보기 연결

PeekPop을 활성화하고, 뷰 컨트롤러에 미리보기 동작을 연결해야 합니다.

import PeekPop

class MusicViewController: UIViewController, PeekPopDelegate {
    
    let peekPop = PeekPop()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        peekPop.registerForPreviewingWithDelegate(self, sourceView: view)
    }
    
    // PeekPop 델리게이트 메소드 구현
    
    func peekPop(_ peekPop: PeekPop, willShow viewController: UIViewController) {
        // 미리보기가 표시될 때 추가 동작을 수행할 수 있음
    }
    
    func peekPop(_ peekPop: PeekPop, didShow viewController: UIViewController) {
        // 미리보기가 표시된 후 추가 동작을 수행할 수 있음
    }
    
    func peekPop(_ peekPop: PeekPop, willHide viewController: UIViewController) {
        // 미리보기가 사라지기 전 추가 동작을 수행할 수 있음
    }
    
    func peekPop(_ peekPop: PeekPop, didHide viewController: UIViewController) {
        // 미리보기가 사라진 후 추가 동작을 수행할 수 있음
    }
}

MusicViewController 클래스는 PeekPopDelegate 프로토콜을 채택하여 PeekPop의 동작을 컨트롤할 수 있습니다. peekPop 인스턴스를 생성하고, viewDidLoad 메소드에서 registerForPreviewingWithDelegate(_:sourceView:) 메소드를 사용하여 뷰 컨트롤러에 미리보기 동작을 연결합니다.

4. 재생 아이템에 미리보기 설정

마지막으로, 음악 재생 앱의 각 재생 아이템에 미리보기를 설정해야 합니다. 이를 위해 UIViewControllerPreviewing 프로토콜을 채택하고, registerForPreviewingWithDelegate(_:sourceView:) 메소드를 사용하여 미리보기 동작을 등록합니다.

class MusicItemViewController: UIViewController, UIViewControllerPreviewingDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        registerForPreviewingWithDelegate(self, sourceView: view)
    }
    
    // UIViewControllerPreviewingDelegate 메소드 구현
    
    func previewingContext(_ previewingContext: PreviewingContext, viewControllerForLocation location: CGPoint) -> UIViewController? {
        // PeekPop 미리보기 컨트롤러 인스턴스 반환
    }
    
    func previewingContext(_ previewingContext: PreviewingContext, commit viewControllerToCommit: UIViewController) {
        // 미리보기 컨트롤러를 풀스크린으로 전환하여 보여줌
    }
}

MusicItemViewController 클래스는 UIViewControllerPreviewingDelegate 프로토콜을 채택하여 미리보기 동작을 컨트롤할 수 있습니다. viewDidLoad 메소드에서 registerForPreviewingWithDelegate(_:sourceView:) 메소드를 사용하여 뷰 컨트롤러에 미리보기 동작을 등록합니다. 그리고 previewingContext(_:viewControllerForLocation:) 메소드에서 미리보기 컨트롤러 인스턴스를 반환하고, previewingContext(_:commit:) 메소드에서 미리보기 컨트롤러를 풀스크린으로 전환하여 보여줍니다.

위의 예시 코드를 참고하여 음악 재생 앱에서 PeekPop을 활용한 미리보기 및 제어 기능을 구현해보세요. 이를 통해 사용자들은 앱 아이콘을 피크하여 음악 재생에 대한 미리보기를 확인하고 즉시 제어할 수 있습니다.

참조: