初めてiOSライブラリを公開してみて、その紹介とCocoaPodsにxibファイルや画像を含める方法について
はじめに
こんにちは。
先日、CocoaPodsにiOSライブラリを投稿させて頂きました。
コードの内容もシンプルでとても簡単なものですが、作成してみて楽しかったです。
この場をお借りしまして、CocoaPods公開時の悩んだ点やライブラリの紹介をさせて頂きたいと思います。
SimpleConsoleView
Installation
use_frameworks!
pod "SimpleConsoleView"
GitHub
https://github.com/KikurageChan/SimpleConsoleView
ViewControllerで以下のようにprintとすると
画面の下側に出力を閲覧できるViewが表示されます。
コード | 説明 |
---|---|
SCprintln(_:) | at new line |
SCprint(_:) | no line break |
また、端末をシェイクすると、このViewは非表示になります。
使い所 ?
勉強用に作るような「サンプルアプリ」やアプリ側で出力を見たい時などに使えないかなと思っています...
悩んだところについて
カスタマイズ性などから固有の画像などを含めることは
あんまり良くないのかもしれないのですが、
私の作成したものには「xibファイル」と「画像」を含んでいました。
その場合のpodspecの書き方とディレクトリなどについて書いてみたいと思います。
pod lib create
した時に作成されるディレクトリ構成はこんな感じです
SimpleConsoleView
├── Example // サンプルプロジェクトが入っているディレクトリ
├── LICENSE // ライセンスについて記述してあるファイル
├── README.md
├── SimpleConsoleView // _Pods.xcodeprojのプロジェクトファイル
├── SimpleConsoleView.podspec
└── _Pods.xcodeproj // 自動生成された.xcodeproj
私は、ライブラリとして作ったプロジェクトが既にあったので
自動生成された_Pods.xcodeprojとそのプロジェクトファイルSimpleConsoleViewを置き換えました。
SimpleConsoleView
├── Example
├── LICENSE
├── README.md
├── SimpleConsoleView <-- 置き換え
├── SimpleConsoleView.podspec
└── SimpleConsoleView.xcodeproj <-- 置き換え
ディレクトリ構成
置き換えたプロジェクトの中身を見ています。構成はこのような感じにしました。
SimpleConsoleView
├── SimpleConsoleView
| ├── AppDelegate.swift
| ├── Assets //ここにxibやxcassetsを入れています
| ├── Base.lproj
| ├── Classes //ここに.swiftファイルを入れています
| ├── Controllers //動作確認のためのStoryboardやViewController.swiftを入れています
| └── Info.plist
└──SimpleConsoleView.xcodeproj
podspec
podspecは以下のように書きました。(一部抜粋)
# ここにソースファイルのパスを書いています
s.source_files = 'SimpleConsoleView/Classes/**/*.swift'
# ここにxibやxcassetsのパスを書いています
s.resource_bundles = {
'SimpleConsoleView' => ['SimpleConsoleView/Assets/*.xib','SimpleConsoleView/Assets/*.xcassets']
}
コードからxibファイルや画像ファイル呼び込む(Bundle経由?)
xibファイル
let pod = Bundle(for: self.classForCoder)
let path = pod.path(forResource: "SimpleConsoleView", ofType: "bundle")!
let bundle = Bundle(path: path)
let view = UINib(nibName: "SimpleConsoleView", bundle: bundle).instantiate(withOwner: self, options: nil).first as! UIView
画像ファイル (xcassets)
let dotImage = UIImage(named: "dot", in: Bundle(for: DotImageView.self), compatibleWith: nil)
さいごに
私はiOS初心者で、Bundleなど分からないまま利用している部分が多く、
また、今回作成したライブラリも様々な問題を抱えています。
ViewControllerにこのViewを乗せて画面遷移をすると、次のViewControllerで何らかのSCprintを記述しないと再表示されない事(SCprint("")と空文字を表示させれば再表示できますが...)
シェイクすると非表示にできますが、画面遷移した時に、このViewを触るか、SCprintを記述しないとフォーカスが当たらずにシェイクアクションが受け取れない事
このViewに表示される文字列の制限を設けていないので、数千行などの表示に耐えられない事
その他Find機能などや横画面に対応していない事
などなど列挙するといっぱいありました...
これからも勉強を続けて、頑張ってみたいと思います。
参考にさせていただいた記事
CocoaPods公開について
cocoaPodsのBundleについて
見て頂いてありがとうございます。
Author And Source
この問題について(初めてiOSライブラリを公開してみて、その紹介とCocoaPodsにxibファイルや画像を含める方法について), 我々は、より多くの情報をここで見つけました https://qiita.com/KikurageChan/items/d52746c35ce8a83e6611著者帰属:元の著者の情報は、元の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 .