UIProgressViewを使ってインスタのストーリーみたいなUIを作ってみる

こんにちは。 今日は山の日⛰ですが、天気が悪くて予定していた山登りを断念しました。台風〜〜〜!! 今回はインスタグラムのストーリーのようなUIを作ってみたので実装方法のご紹介です。 以下のような画面で、画面表示とともにプログレスバーがアニメーシ…

iOSアプリ 環境によって参照する値を変える

定期的にあれどうやるんだっけ?となる、備忘録メモシリーズ production・staging・devなどの環境毎に参照する値を変えたい時に行うXcodeの設定や対処方法は下記の通り。 1. Build Settings > + > Add User-Defined Setting から新しい項目を追加 2. 各環境…

iOS14.5 IDFAを扱っていないつもりだったけどApp Tracking Transparencyの文脈でリジェクトされてしまった🙄

iOS14.5から広告トラッキングなどの実装を入れているアプリについては、AppTrackingTransparencyフレームワークを通じたユーザーからの許可が必須なりましたね。 個人開発のアプリで意図的にトラッキングをしていないにも関わらす、リジェクトされてしまった…

コンテンツの潰れにくさの設定

定期的にあれどうやるんだっけ?となる、備忘録メモシリーズ setContentCompressionResistancePriority(_:for:) https://developer.apple.com/documentation/uikit/uiview/1622526-setcontentcompressionresistancep コンテンツの圧縮抵抗の優先度を指定する…

MKMapSnapshotterを使ってCell内に地図を表示しピンを立てる

こんにちは。 今日はハロウィンということで、美容室に行ったらお菓子をいただきました(ヤッター) 最近MKMapSnapshotterについて調べることがあったので、今回はその備忘録も兼ねて記事を書いてみます。 MKMapSnapshotterはMapKit内に用意されたクラスで、地…

Xibを使ったScrollViewの実装

こんにちは。 WWDCで発表された新OS BigSurが、どうもピクサーに聞こえてしまう今日この頃です。 今回は、「Xcode11における、Xibを使ってUISrollViewを実装する時の制約のかけ方」についての備忘録です。コードには制約を記述せず、Xibのみで実現しようした…

Firebaseを利用したプッシュ通知のカスタムデータの解釈(その2)

こちらの記事の続きです。 前回は、Firebaseを利用してプッシュ通知を実装する場合、どのような形式でデータが送られてくるのか、またその内容はどこで受け取れるのか、という内容を書きました。 今回は、受け取ったデータをどういった構造体に変換して保持…

Firebaseを利用したプッシュ通知のカスタムデータの解釈(その1)

沖縄は梅雨に入ってしまったそうですが、関東では過ごしやすい日が続いて欲しいと思う今日この頃です。ランニング‍♀️もはじめました(健康になるぞ...!!) さて今回は、Firebaseを利用したプッシュ通知の実装について(特に、任意のデータを受け取りたい場合に…

Cell内のテキスト等を上寄せにしたい時のTips

Cell内の説明文が中央寄せになってしまう...コマッタ!! よくあります。 そんな時には、テキスト関連をStackViewで構成すると良さそうです。 は、画像とテキストで構成されたCellですが、右側のテキスト関連はひとつのStackViewの中に納めて、 StackViewのTop…

後からFirebaseのプッシュ通知を設定する場合に確認しておきたいこと(認証キーを使う場合)

既存のプロジェクトに後からプッシュ通知の設定を入れる際に、全く通知が届かず、手こずったのでので備忘録。 状況 FirebaseのCloudMessagingの機能を使って、iPhoneにプッシュ通知を送りたい そのため、公式ドキュメントに沿って、設定やコードを追加した …

Swiftでmultipart/form-dataのリクエストを実装してみる

最近、埼玉県飯能市にあるムーミンのテーマパーク、ムーミンバレーパークに行って来ました。ムーミンの原作の絵が怖すぎて、作者であるトーベ・ヤンソンの人生が気になります さて、最近、複数の画像をmultipart/form-dataの形式でアップロードしたいと思う…

Compositional Layoutsで複雑なUIのCollectionViewを実装する

WWDC2019で発表されたCompositional Layoutsは、どうやら複雑なレイアウトのUICollectionViewを簡単に実現することができるらしいという事で、調査と実装をしてみました。 今回は、Compositional Layoutsを利用して、インスタグラムやWearで使われているよう…

Xcode11.1でDistributeしようとしたら、Code signing "XXXX.framework" failed エラーが出る

TL;DR Carthage で入れたframework設定を Do not Embed にして、Run Script の Input Files にパスを追加する。 XcodeでArchive後、AdHocでDistributeしようとしたら Code signing "XXXX.framework" failed が出て進まなくなってしまった... 👇と同じ現象... h…

全画面のナビゲーションバーの設定を一括で変更するには

UINavigationControllerのサブクラスを作って共通の設定を追加すると簡単です。 ナビゲーションバーの戻るボタンタイトルを全画面で消したい、背景色やタイトルなどの設定も一括で行いたいのであれば、 以下のように、そのアプリ専用のナビゲーションを実装…

一部をくり抜いたオーバーレイを表示する方法

背景の一部を表示させたまま、半透明のオーバーレイを表示させたい事があったので、その時の実装した内容のメモです 具体的には下記のgifのような挙動の実現方法です。 ボタンをタップすると、背景に表示された緑の四角が見えるようにくり抜かれたオーバーレ…

DateFormatterを汎用化する

9月は山登りしたりテント泊したり、遅めの夏休みということで海外旅行したり、リフレッシュできて満足しているmuchanです。 仕事とプライベートで割と慌ただしくしていた分、体調が心配だったけれども、毎日DHCのマルチビタミンを飲んでうがい手洗いをしてい…

カスタムCellを使ったUITableView実装テンプレート

もう8月も終わりですね。夏の北アルプス登山は最高なのですが、今年はまだ行けてなくてウズウズしてます⛰ お気持ちが高まって、先週テント泊の練習に行ってきました。テント、最高です さて本題ですが、タイトル通りです。 TableViewを実装するシーンがよく…

UIColor Extention と #colorLiteralで色指定を楽にする

やっと夏っぽくなってきて嬉しいです。そして天気の子は最高です。 今日はUIColor をExtentionする話。 自分のサービスでよく使う色などは、共通化してどこからでも使えるようにしたい。そんな時にはUIColorを拡張すると良いですよね。 view.backgroundColor…

OAuthSwiftでtwitterログイン認証を実装する

iOSでtwitter認証を実装する際によく利用されていた、公式ライブラリであるTwitterKitがサポート終了していたので、代替方法としてOAuthSwiftでtwitterのログイン認証を実装した。その際の手順をメモ。 準備 ドキュメントに沿ってOAuthSwiftを入れる 今回はC…

Xcodeで画像リソースを追加する

iOSアプリ内で表示する画像ファイルの追加手順です。 公式ドキュメント 手順 Assets.xcassets を選択 画像をドラッグ&ドロップすると、その画像名でリソースが追加される 使い方 let imageView = UIImageView() imageView.image = #imageLiteral(resourceNam…

ルート画面に下タブを追加する

UITabBarController を利用することで、タブを表示することが可能。 前回の記事でrootViewControllerに指定した RootViewController ファイルを以下のように書き換えると、2タブの画面が表示される。 今回の例では、NavigationControllerもセットしています…

コードでrootViewControllerを指定する

Xcodeで新しくProjectを作ると、デフォルトでMain.storyboardがrootになるけれど、StoryBoardを使わずにrootViewControllerを設定したい事が多いのでメモ。 手順 1. Main.storyboardの指定を削除する Single View App を選択してproject作成 Main.storyboard…

はじめに

iOSエンジニアのmuchanと申します。仕事では主にSwiftでiOSアプリを開発していて、たまにRubyやTypeScriptなども触ります。 あまりアウトプットが得意ではないので、克服すべくブログを始めました。 気張らず、未来への自分のドキュメントとして、Tipsを残し…