iOS용 슬라이드쇼 UI 라이브러리를 만들었습니다.

↓이런 녀석



사용법



이미지 URL 배열의 경우


let v = SlideViewerController.setup(
    mainImageURLs: [
        URL(string: "https://example.com/path/to/slide/1.png")!,
        URL(string: "https://example.com/path/to/slide/2.png")!,
        ...
    ],
    thumbImageURLs: [
        URL(string: "https://example.com/path/to/slide/thumb/1.png")!,
        URL(string: "https://example.com/path/to/slide/thumb/2.png")!,
        ...
    ]
)
present(v, animated: true)

PDF 파일 URL의 경우


let pdfURL = "https://speakerd.s3.amazonaws.com/presentations/50021f75cf1db900020005e7/speakerdeck.pdf"
let v = SlideViewerController.setup(pdfFileURL: URL(string: pdfURL)!)
present(v, animated: true, completion: nil)

번들된 PDF 파일의 경우


let path = Bundle.main.path(forResource: "speakerdeck", ofType: "pdf")
let url = URL(fileURLWithPath: path!)
let doc = PDFDocument(url: url)
let v = SlideViewerController.setup(pdfDocument: doc!)
present(v, animated: true)

여기가 멋지다.


  • SlideShare 앱의 UI·거동을 거의 완코피했다
  • 뷰어로서 본가 나란히는 사용하기 쉽다고 생각한다

  • 복수의 인풋 형식에 대응하고 있다
  • 이미지 URL 배열, PDF 파일 URL, 로컬 PDF 파일
  • 슬라이드 쇼 용도도 있고 단순히 PDF 뷰어로도 사용할 수 있습니다

  • 세로·가로 모두에 대응하고 있다

  • 여기 괜찮지 않아.


  • 이미지 다운로드 순서의 현명한 제어는 하지 않는다
  • 큐에 전체 이미지 다운로드 작업을 넣고 뒤에서 다운로드하면 더 UX 좋을 것 같지만하지는 않습니다

  • 가끔 이미지 크기 조정이 버그됩니다
  • carthage 대응 아직 하지 않았다

  • 실장시의 궁리 포인트


  • 이미지의 리사이즈 등의 [무거운 처리 및 백그라운드 thread로 실행할 수 있는 처리]는 가능한 한 그 쪽에서 하게 했다
  • UI가 멋지지 않고 부드럽게

  • ReSwift를 사용하고 있으며 상태 관리가 간단합니다.
  • 소박하게 구현하고 있으면 좀 더 복잡한 코드가 되어 버린 것 같다




  • 이 라이브러리는, 실은 아래의 기사에서 제작으로 방치하고 있던 것
    htps : // 코 m / 아베 유야 / ms / 6587 8f3990606f40429

    사내에서 iOS 엔지니어로 모여 공부회적인 일을 하자, 그 발표로 이 라이브러리에 대해 이야기하게 되었다
    구현은 거의 완료하고 있어 모처럼이므로 라이브러리로서 릴리스 할 수 있는 상태에 최소한은 정비했다
    모처럼이므로 qiita에서도 기사로 만들려고 생각했습니다.

    좋은 웹페이지 즐겨찾기