Iganinのブログ

日頃の開発で学んだ知見を中心に記事を書いています。

【Swift/Kotlin】SwiftのswitchとKotlinのwhenの対比

はじめに 条件分岐を実装する際にif else以外に Swiftではswitch、 Kotlinではwhenを使用します。 基本的にはiOS開発を行っていますので、Kotlinのwhen文を書く際に書き方を思い出すのに少し時間がかかることがあり、 学習の意味もかねて両者の比較を行いま…

【iOS】サーバーからのリモート通知を実施するために必要なアプリ側対応の概略

はじめに Push通知はサービスユーザーに情報を送る上でとても有効な手段です。最近では、Firebase の Cloud Messagingの登場により、キャンペーンのプッシュや固定文言の定期PushはFirebase側で取り扱うことができるようになりましたが、ユーザー個別に動的…

2019年7月振り返り

7月の振り返り 目標の進捗状況の定期確認です。7月は梅雨で体調が悪い日々が続いていましたがなんとか切り抜けられました。 ただ、今度は高熱にやられています。早く秋になるか、もう少し暑さが落ち着いて欲しいです。 体の基礎づくり 目標: ベンチプレス 1…

【iOS】UINavigationControllerでcompletionHandlerを伴ったpush/pop遷移ができるようにする

はじめに 画面のモーダル遷移を実現するUIViewControllerのpresent(viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?) や dismiss(animated: Bool, completion: (() -> Void)?) では completionがあり画面遷移完了後…

【iOS】IBDesignableで画像をscaleAspectFitやscaleAspectFillで表示できるUIButtonを作る

はじめに 通信結果から画像を取得し、その画像をAspectFill(もしくはAspectFit)で設定して、その部分を押下すると詳細画面に遷移するというのはアプリ開発においてよくあるパターンだと思います。 例えば、メディア系のアプリでなんらかの特集をくみ、その…

2019年6月振り返り

6月の振り返り 目標の進捗状況の定期確認です。 体の基礎づくり 目標: ベンチプレス 100kg デッドリフト 150kg スクワット 150kg 実績: ベンチプレス 90kg デッドリフト 105kg スクワット 120kg ベンチプレスの重量が徐々に上がっています。100kgまであと…

【iOS】Place Holder(プレースホルダー)付きのUITextViewを作成する

はじめに 複数行のユーザーインプットを受け付けたいとき、UITextViewをよく使用します。 ユーザーがどのような内容を入力すれば良いかのヒントを与えるためにプレースホルダーの使用を検討することもよくあることだと思います。 ところが、UITextViewにはプ…

【iOS】単位付きのUITextFieldを作る方法とカスタムクラス

はじめに ユーザーからの情報の入力の際にTextViewと並んでUITextFieldはよく使われます。 単位付きの入力にしたい場合は、UITextFieldの範囲外にUILabelを設置する、 入力値に単位をつけ、それを特別扱いするようDelegateメソッド内で 対応するといった方法…

【iOS】SwiftGenで自動生成されるファイル内のStructやenumのアクセス修飾子をpublicにする方法

はじめに SwiftGenはR.swift同様にAssetやImage、Storyboardへのアクセスを、安全にしてくれるStructやenumなどの自動生成ツールです。 例えば、UIImageのインスタンスの生成はSwiftGenを使用すると下記のようになり、タイポによる不具合を防ぐことができま…

【iOS】UITabBarの真ん中のボタンが特殊な見た目・挙動のUIを作成する方法

はじめに InstagramのようにTabBarの真ん中が通常のTabBarItemではなく、押下することでModalで画面が表示されたり、 シートで選択肢が表示されるようなアプリがあります。また真ん中のボタンのデザインがTabBarからはみ出したりしているようなものもありま…