はじめに
CocoaPods 導入したことだし、プロジェクトで使っているライブラリをすべて CocoaPods でインストールし直そうかな。ってことで手始めに TapkuLibrary をインストールしてみる。
TapkuLibrary は iOS 用 UI 部品を提供するライブラリ。カレンダーとかカバーフローとかプログレスバーとか色々提供しているんだけど、みんなカレンダーしか使ってない気がする。
ちなみに CocoaPods の導入手順は次の記事を見ること。
練習用プロジェクトを作成
ぶっつけ本番は怖いんで、今回は練習にしておく。TapkuSample っていうテキトーな名前で練習用プロジェクトを作成。
CocoaPods を使って、このプロジェクトに TapkuLibrary をインストールして、ライブラリのコントロールを配置してみる。
TapkuLibrary をインストール
プロジェクトのルートディレクトリに
platform :ios pod 'TapkuLibrary'
を記述した Podfile を作成。
あとは Podfile のディレクトリで
pod install
を実行すればインストール。たったこれだけ。xcworkspace ファイルが生成されるので、Xcode で開くと、TapkuLibrary が使えるようになっている。簡単すぎて拍子抜けしたよ。
CocoaPods 導入前は、GitHub からソースコードをダウンロードして、プロジェクトに追加して、ビルドオプションを変更して、ビルドに失敗してウガーってなってたんだけどな。
カレンダービューを設置してみる
TapkuLibrary を使う理由は、iPhone のカレンダーアプリみたいなカレンダービューを使うためだし。
ViewController の無名カテゴリにカレンダービューを保持するプロパティを追加し、あとプロトコルも実装する。
#import <TapkuLibrary/TKCalendarMonthView.h> #import "MainViewController.h" @interface MainViewController () <TKCalendarMonthViewDelegate> @property (nonatomic, strong) TKCalendarMonthView *calendarView; @property (nonatomic, strong) NSDate* dateSelected; @end @implementation MainViewController @synthesize calendarView = _calendarView; @synthesize dateSelected = _dateSelected; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // カレンダービューを追加 self.calendarView = [[TKCalendarMonthView alloc] init]; self.calendarView.delegate = self; [self.view addSubview:self.calendarView]; [self.calendarView reload]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { self.calendarView = nil; } // TKCalendarMonthViewDelegate プロトコルを一部実装 - (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)date { self.dateSelected = date; } @end
今回は、カレンダーにマークを表示したりしないので、デリゲートだけをセットしている。
エミュレーターを実行すると
iPhone 標準っぽいカレンダーが表示された。ホント、iPhone のカレンダーアプリっぽい。
まとめ
CocoaPods を使えば、Podfile を記述して pod install を実行するだけで、手軽に TapkuLibrary が導入できますよ、と。
ただ、CocoaPods で導入が簡単になったとはいえ、Storyboard で配置できないのは不便だし*1、標準で提供されないかなぁ。だいたい、カレンダービューが標準で提供されていないのが不思議だし、不満。
*1:やり方を知らないだけかもしれないけど