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対応まだしてない
実装時の工夫ポイント
- 画像のリサイズなどの[重い処理かつバックグラウンドスレッドで実行できる処理]はできるだけそちらでやるようにした
- UIがカクつかずスムーズ
- ReSwiftを使っており、ステートの管理がシンプルにできている
- 素朴に実装していたらもうちょっと複雑なコードになってしまった気がする
おまけ
このライブラリは、実は下記の記事で作りかけで放置していたもの
https://qiita.com/abeyuya/items/6587a8f3990606f40429
社内でiOSエンジニアで集まって勉強会的なことやろう、ということになり、その発表でこのライブラリについて話すことになった
実装はほぼ完了していたし、せっかくなのでライブラリとしてリリースできる状態に最低限は整備した
せっかくなのでqiitaでも記事にしようと思った
Author And Source
この問題について(iOS向けのスライドショーUIライブラリを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/abeyuya/items/3005afe6a6bf2fa352fd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .