21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

めくるカレンダーをつくってみた(swift)

Last updated at Posted at 2018-01-17

#はじめに
objective-cでつくったはいいけど使っていないクラスをswiftに書き換えてgithubにあげてみたので、そのクラスについて紹介したいと思います。自分はまだ使う場面がない(今のところ思いつかない)ので、あわよくばだれかに使ってもらえたらいいなと思います。(第三弾)

第一弾(時計)

第二弾(スピードメーター)

2019/04/21 せっかくなんでswift5.0対応しました

#GitHub
今回はこちらのクラスについて紹介します。

AMCalendar

#見た目
calendar.gif

#機能
日付を選択するためのカレンダー

  • 上下にページをめくり月を変更できる(上限なし)
  • 文字色など設定できる

#使い方

  1. 初期設定をする
    表示したいViewControllerから下記のメソッドを呼ぶ

    let calendar =
    AMCalendar.setCalendar(onView: view, parentViewController: self,
                           selectedDate: Date(), delegate: self)
    

    引数

    • onView : カレンダーを置くためのView
    • parentViewController : 呼び出し元のViewController
    • selectedDate : 選択日付(初期表示する日付)
    • delegate : デリゲート
  2. 初期表示
    上記メソッドの selectedDate に日付を設定するとその日付の月が表示される。
    初期選択の日付がnilの場合は当日の月が表示される。
    選択日付には赤色の塗りつぶしの丸が表示される。
    当日には緑色のくり抜きの丸が表示される。

calendar_1.png
  1. デリゲートを設定する
    日付を選択すると下記が呼ばれる

    func calendar(_ calendar: AMCalendar, didSelectDate date: Date?)
    

端末のカレンダーの設定などを変更すると下記のような表示になります。
calendar_2.png

その他いろいろ設定すると下記のような表示もできます。
calendar

#つくったきっかけ
UIPageViewControllerを使っていた時に、「これを使えばめくるカレンダーがつくれる!」と思った。すでに日付選択用のクラスはあったが、左右のスワイプで月を変更するものだった。カレンダーならめくって月を変更したいと思いつくった。

#使わなかった理由

  1. 既存のクラスがある
    すでに日付選択用のクラスがあり、慣れもあるためコイツに取って代わることはなかった。
  2. 動きがわかりにくい
    強いて理由をあげるなら上下のジェスチャで月変更というのが初見のユーザーにはわかりにくいかもしれない。

#さいごに
以上の理由から今のところは使用していませんが、もしかしたら今後使う場面があるかもしれません(もしくは思いつくかもしれない)。めくるカレンダーはおもしろいと思ったが既存のものには勝てなかった。

私はほぼObjective-Cしか使ったことがないペーペーのプログラマーなので記事内容やgithubのコードにおかしなところがあればご指摘いただければ幸いです。

#つくったのまとめ

##動作確認用にまとめたプロジェクト

21
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?