iOS

Swiftで完了ハンドラを省略しよう! None

Swiftで完了ハンドラを省略しよう!

Swiftはシンプルでより英文に近い読みやすい言語として登場しました。中でも最後のクロージャを変形(Trailing Closure Syntax)できるのが気に入っています。 let action = UIAlertAction(title: "OK", style: .default, hand…
アプリのアイコンをsipsコマンドで作成する None

アプリのアイコンをsipsコマンドで作成する

Macのターミナルからsipsコマンドを使えば様々なサイズのアイコンを楽に作成できます。 iOS12の今の時点では、一番大きな1024pxのアイコンに加え、iPhone用8種類、iPad用9種類、のアイコンが必要になっています。この17枚のリサイズした画像をコマンド一発で作成できます。 まず、102…
IBOutletCollectionをNSMutableArrayにする None

IBOutletCollectionをNSMutableArrayにする

同種のViewを配列で扱えるIBOutletCollectionは、普通に使うと変更できないNSArrayになります。ボタンのコレクションを宣言するとこんな感じ。 @property (nonatomic) IBOutletCollection(UIButton) NSArray<UIButt…
縦向きのスライダーVertical Sliderを作ってみよう None

縦向きのスライダーVertical Sliderを作ってみよう

Viewの向きを変えたいとき、今のところ、Storyboardからは直接回転させられません。ですので、初期化時にtransformで回転させますが、そうすると、制約でレイアウトを制御しにくくなります。目視でレイアウトを微調整できないのも不便ですよね。 妥協点を探る上で、縦向きのスライダーを考えてみま…
UIAlertControllerは拡張高い None

UIAlertControllerは拡張高い

UIAlertControllerはサブクラス化が禁止されていますが、内部では色々な事ができるように作られています。setValueを使うと上部にViewControllerを追加できるので画像を表示できるようにカスタマイズしてみました。取りあえずiOS10と11で動きます。 画像表示ダイナミックフ…
Swiftで経過時間を表示する None

Swiftで経過時間を表示する

秒数を整数にして自力で計算する タイマーで繰り返し経過時間を表示させる場合は、整数にして計算すると速いです。 // 適当に開始時点のDateを用意する let startDate = Date().addingTimeInterval(-180071.3325) // 開始からの経過秒数を取得する …
ナビゲーションバーの戻るボタンのタイトルだけを消す方法 None

ナビゲーションバーの戻るボタンのタイトルだけを消す方法

ナビゲーションを使った画面遷移で左側に表示される<戻るボタンを矢印だけにしてみます。最初に紹介する前の画面で設定しておくのが一番簡単な方法です。 前の画面で設定しておく 遷移前のViewControllerで空のボタンをセットしておくとpushした次の画面で文字が消えます。 コードで設定 ov…
競合するUIGestureRecognizerを上手く共存させる None

競合するUIGestureRecognizerを上手く共存させる

viewに割り当てたジェスチャー同士がバッティングした時にはどれを失敗させるのか、事前に決めておく必要があります。 こういった処理は通常、画面上のジェスチャーを同列に扱えるViewControllerの中で書く訳ですが、複雑なアプリになると出来るだけVCには書きたくなくなります。 そこで、ある程度良…