UIKit에서 PDF 뷰어 만들기: 문서 보기 기능 추가
UIKit에서 PDF 뷰어 만들기: 문서 보기 기능 추가
iOS 애플리케이션에서 PDF 문서를 보기 위한 기능을 구현하는 것은 흔한 요구사항입니다. 이 글에서는 Swift
와 UIKit
을 사용하여 PDF 뷰어를 만드는 방법과 추가적으로 문서 보기 기능을 더하는 과정을 단계별로 설명합니다.
프로젝트 설정
PDF 뷰어 기능을 추가하기 위해 새로운 프로젝트를 만들어보겠습니다.
-
새 프로젝트 생성:
- Xcode를 열고 새 프로젝트를 생성합니다. Single View App 템플릿을 선택합니다.
- 프로젝트 이름을 설정하고 Swift 언어와 UIKit을 선택합니다.
-
필수 라이브러리 추가:
- PDFKit은 PDF 문서를 처리하는 데 필수적인 라이브러리입니다. PDFKit을 사용하기 위해
import PDFKit
문을 파일 상단에 추가합니다.
- PDFKit은 PDF 문서를 처리하는 데 필수적인 라이브러리입니다. PDFKit을 사용하기 위해
기본 PDF 뷰어 구현
다음으로, 기본적인 PDF 뷰어를 구현해보겠습니다. 이를 위해 PDFView
클래스를 사용합니다.
- UI에 PDFView 추가:
Main.storyboard
에서 뷰 컨트롤러를 선택하고, PDFView를 추가합니다. PDFView는 PDF 문서를 렌더링하고 표시하는 역할을 합니다.- 뷰 컨트롤러에 PDFView를 연결하기 위해 아웃렛을 생성합니다.
swiftimport UIKit import PDFKit class ViewController: UIViewController { @IBOutlet weak var pdfView: PDFView! override func viewDidLoad() { super.viewDidLoad() loadPDF() } func loadPDF() { if let path = Bundle.main.url(forResource: "sample", withExtension: "pdf") { if let document = PDFDocument(url: path) { pdfView.document = document } } } }
loadPDF()
메서드는 번들에 포함된 PDF 파일을 로드하여PDFView
에 표시합니다.
문서 보기 기능 추가
기본적인 PDF 뷰어가 완성되었으니, 이제 추가 기능을 구현해보겠습니다. 여기에는 페이지 넘김, 확대/축소, 그리고 페이지 인디케이터가 포함됩니다.
페이지 넘김 기능
페이지 넘김을 쉽게 구현하기 위해서는 PDFView
의 goToNextPage()
와 goToPreviousPage()
메서드를 이용합니다.
-
UI 버튼 추가:
Main.storyboard
에서 다음 페이지와 이전 페이지로 이동하는 두 개의 버튼을 추가합니다.
-
액션 연결:
- 버튼에 액션을 연결하여 사용자 입력이 있을 때 페이지가 변경되도록 합니다.
swift@IBAction func nextPage(_ sender: Any) { pdfView.goToNextPage(nil) } @IBAction func previousPage(_ sender: Any) { pdfView.goToPreviousPage(nil) }
확대/축소 기능
PDFView
는 자동으로 확대 및 축소를 지원합니다. 확대/축소 기능을 사용자가 제어할 수 있도록 버튼을 추가합니다.
-
확대/축소 버튼 추가:
Main.storyboard
에서 확대 및 축소 버튼을 추가합니다.
-
액션 연결:
- 각 버튼의 액션을 연결하여 확대 및 축소 기능을 제어합니다.
swift@IBAction func zoomIn(_ sender: Any) { pdfView.scaleFactor = pdfView.scaleFactor * 1.1 } @IBAction func zoomOut(_ sender: Any) { pdfView.scaleFactor = pdfView.scaleFactor * 0.9 }
페이지 인디케이터
페이지 인디케이터를 추가하여 사용자가 현재 페이지 번호와 전체 페이지 수를 쉽게 확인할 수 있도록 합니다.
-
레이블 추가:
Main.storyboard
에서 페이지 번호를 표시할 레이블을 추가합니다.
-
페이지 변경 알림 등록:
PDFView
의 페이지 변경 알림을 감지하여 레이블을 업데이트합니다.
swiftoverride func viewDidLoad() { super.viewDidLoad() loadPDF() NotificationCenter.default.addObserver(self, selector: #selector(pageChanged), name: .PDFViewPageChanged, object: pdfView) } @objc func pageChanged() { if let currentPage = pdfView.currentPage, let totalPages = pdfView.document?.pageCount { pageNumberLabel.text = "Page \(currentPage.label ?? "") of \(totalPages)" } }
결론
이제 UIKit
을 사용하여 기본적인 PDF 뷰어와 몇 가지 유용한 기능을 구현하는 방법을 배웠습니다. 본 튜토리얼을 통해 페이지 넘김, 확대/축소, 페이지 인디케이터 등을 추가하여 보다 완성도 높은 PDF 뷰어를 만들어 보세요. 추가로 요구되는 기능에 따라 파일 저장, 주석 추가, 검색 등의 기능도 확장할 수 있습니다.