杏z学習帳

Swift、Unityなどを中心に節操なく手を出してますまる

シンプルなImageViewerをつくった(2018/09/29)

[Swift]シンプルなImageViewerをつくった

ざっくりまとめ。

です。

環境

ImageViewerつくった!

さんぷる

うむ、なにいってるのよくわからん。っていう方のために(笑)

screenshot

なぜつくったのか

こういうものは他にもたくさんあるのだけれど...
使っていたものが、どうも Swift 4.2 対応されないような気がして...
(最終 commit が結構前とか、issue とか PR とかたまっているとか...で)
代替として SimpleImageViewer っていうものがあるのだけれど、そもそも

と、自分が求めているレベルぐらいであれば、自作も全然できるな...ということで、
この際つくるか!って思い立ちました。

カスタマイズ性はほぼ無いかわりに、使い方はいたって単純となっています(笑)

ちょっと欲を出して

上記に上げた2つの目的だけだと、流石にライブラリとしてあげるのが憚れたので、
Transition をちょっといじってみました(笑)
対象の画像位置を起点にズームしながら遷移していくっていう、よくあるやつですね〜
こっちのが手間で時間かかりましたね...(汗)

ハマりポイント

リソースどうやって読み込むんだ...

今回閉じるボタンのためにバツ画像を用意したのだけれど...
どうやって読み込むんだろう?と....いつもの感じだととりあえず駄目で

って言うことらしい。

let bundle = Bundle(path: Bundle(for: ANZSingleImageViewer.self).path(forResource: "ANZSingleImageViewer", ofType: "bundle")!)
let image = UIImage(named: "icon_close", in: bundle, compatibleWith: nil)

ANZSingleImageViewer.self で指定しつつ Bundle 作るのはわかる。
そのあとの、ANZSingleImageViewer.buldeを取りに行くとこがちょっとアレですよね。
多分 .podspec の s.resource_bundles で指定してる key が bundle のファイル名になるのかな。。。

Cocoapods に公開する時に少しハマった

pod lib lint を実行すると、エラーが出まして...。
どうも Swift 3.x で lint 実行しようとしてる感じ。
ということで .swift-version っていうファイルを作って、
そこで Swift バージョンを指定してみたのですが、
これでもエラーがでたのです...。

どうしたのかというと、
.podspec のなかで s.swift_version = '4.2' と記述すると回避できました
(.swift-version ファイルは消してもok)
ってことで、lint でそこらのエラーが吐かれた場合は、確認してみるといいかもしれません。
(エラー内容は消してしまったので...具体的にこれって書けない...🙏)


できるだけ簡単にこれぐらいの Viewer が欲しい方は是非。。!
そして、スターください!(スター乞食😇

参考

自作ライブラリのCocoaPods対応 - Qiita Unsplash