[swift] PeekPop을 활용한 웹 브라우징 앱의 구현 방법

개요

PeekPop은 iOS의 3D Touch 액션 중 하나로, 앱에서 미리보기 및 빠른 접근을 가능하게 해주는 기능입니다. 이 기능을 활용하여 웹 브라우징 앱을 구현할 수 있습니다. 이번 블로그 포스트에서는 Swift 언어를 사용하여 PeekPop을 활용한 웹 브라우징 앱의 구현 방법에 대해 알아보겠습니다.

구현 방법

단계 1: 프로젝트 설정

새로운 iOS 프로젝트를 만들고, 필요한 라이브러리들을 추가합니다. 이 예제에서는 WebKit, PeekPop 라이브러리를 사용할 것입니다.

단계 2: PeekPop 기능 설정

PeekPop을 사용하기 위해 프로젝트 설정 파일에 다음 코드를 추가해야 합니다.

import PeekPop

class ViewController: UIViewController, PeekPopPreviewingDelegate {
    
    var peekPop: PeekPop?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        peekPop = PeekPop(viewController: self)
        peekPop?.registerForPreviewingWithDelegate(self, sourceView: self.view)
    }
    
    ...
    
}

단계 3: 웹 뷰 설정

WebKit을 사용하여 웹 뷰를 설정합니다. 다음 코드를 viewDidLoad 함수에 추가합니다.

import WebKit

class ViewController: UIViewController, PeekPopPreviewingDelegate {
    
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView = WKWebView(frame: view.frame)
        view.addSubview(webView)
        
        let url = URL(string: "https://www.example.com")!
        let request = URLRequest(url: url)
        webView.load(request)
    }
    
    ...
    
}

단계 4: PeekPop 동작 설정

PeekPop을 사용하여 웹 페이지를 미리보기할 수 있도록 설정합니다. 아래 코드를 추가합니다.

import WebKit

class ViewController: UIViewController, PeekPopPreviewingDelegate {
    
    var webView: WKWebView!
    var previewedURL: URL?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView = WKWebView(frame: view.frame)
        view.addSubview(webView)
        
        let url = URL(string: "https://www.example.com")!
        let request = URLRequest(url: url)
        webView.load(request)
        
        peekPop?.registerForPreviewingWithDelegate(self, sourceView: webView)
    }
    
    ...
    
    func peekPop(_ peekPop: PeekPopPreviewing, commit viewControllerToCommit: UIViewController) {
        guard let previewedURL = previewedURL else { return }
        let safariViewController = SFSafariViewController(url: previewedURL)
        present(safariViewController, animated: true, completion: nil)
    }
    
    func peekPop(_ peekPop: PeekPopPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
        guard let previewedURL = webView.url else { return nil }
        self.previewedURL = previewedURL
        let safariViewController = SFSafariViewController(url: previewedURL)
        safariViewController.preferredBarTintColor = UIColor.white
        safariViewController.preferredControlTintColor = UIColor.black
        return safariViewController
    }
    
}

결론

이제 위의 코드를 사용하여 PeekPop을 활용한 웹 브라우징 앱을 구현할 수 있습니다. 사용자는 웹 페이지를 미리보기로 확인하고, 필요에 따라 전체 페이지를 SafariViewController로 열 수 있습니다. 자세한 내용은 각 라이브러리의 문서를 참조하시기 바랍니다.

참고 자료