xyk blog

最近は iOS 開発の記事が多めです。

Swift で月初・月末を取得する

検証環境: Xcode Version 12.5 (12E262) Swift 5.4 Swift で、ある月の月初・月末を取得する方法。 月初の取得は1日固定で取得するだけだが、月末の取得は月初から1ヶ月進めて1日戻すことで算出できる。 例1:2020年2月の月初と月末を取得する let calendar …

Git でブランチの派生元を間違えたときに git rebase --onto で修正する

git

やるたびに調べているのでメモ。 $ git rebase --onto (新しい派生元ブランチ名) (現在の派生元ブランチ名) (ブランチ名) 派生元がブランチでない場合はコミットID指定でもOK。 例: 間違えて develop から作成した feature/hoge ブランチの派生元を master …

表示中のマップ(MKMapView)領域内に含まれるアノテーション(MKAnnotation)を調べる

検証環境: Xcode Version 12.5 (12E262) Swift 5.4 iOS Deployment Target 11.0 表示中のマップ(MKMapView)領域内に配置されているアノテーション(MKAnnotation)を調べる方法について。 MKMapView.visibleMapRectで現在表示中の領域を取得し、MKMapView.anno…

Swift 5.3 からの Multiple Trailing Closures

Swift 5.3(SE-0279、SE-0286)から追加された Multiple Trailing Closures について。 例えば、UIView.animate メソッドのような引数に複数の Closure を持つ場合の Trailing Closure は Swift5.2 までは次のように書いていた。 UIView.animate(withDuratio…

iOS アプリがユニバーサルリンクから起動されたかを判定する

検証環境: Xcode Version 12.5 (12E262) Swift 5.4 ユニバーサルリンク(Universal Link)から iOS アプリが呼び出された場合にはAppDelegateのapplication(_:continue:restorationHandler:)メソッドが呼び出される。 これはアプリが 未起動状態からアプリ起動…

App内課金の審査が「審査待ち」から進まない

ios

App内課金の審査が審査待ち状態から進まなかった時の話。 アプリの審査については最近は1~2日で終わる。 今回は新規のアプリというわけではなく、追加で消耗型のApp内課金を追加したのだが、「審査待ち」状態のまま、何の音沙汰もなく1週間ほど過ぎてしまっ…

git でリモート追跡ブランチを解除する

git

検証環境: git version 2.23.0 git で特定のブランチが既に何かのリモートブランチを追跡している状態で、その追跡をやめる方法、そして再度追跡させる方法についてメモ。 リモートブランチの追跡を解除する 以下コマンドでリモートブランチの追跡が解除され…

Swift で少数第二位や第三位で丸め処理を行う

検証環境: Xcode 12.4 Swift 5.3.2 Swift で少数第二位や第三位で丸め処理を行う方法について。 例えば第二位で四捨五入したいのであれば、対象の少数値にまず10を掛けてからrounded()で四捨五入し、その後に10で割ればよい。 実行例 let pi = Double(3.1415…

Swift の Float(CGFloat) や Double で小数点の丸め処理を行う

検証環境: Xcode 12.4 Swift 5.3.2 Swift の浮動小数点数型である Float(CGFloat) や Double で小数点の切り捨て、切り上げ、四捨五入などの丸め処理をするには Swift3 から追加された FloatingPoint プロトコルの extension に定義されている roundedメソッ…

UITabBar の特定タブの選択時の色を変える

検証環境: Xcode 12.4 Swift 5.3.2 iOS Deployment Target 14.4 UITabBar 使用時に、特定タブ(UITabBarItem)のみ、選択時の色を変える方法について。 2つ目のタブを赤に変更 その他のタブはデフォルトの tint color タイトル文字色はtabBarItem.setTitleTex…

iOS14 での CLLocationManager の変更点

検証環境: Xcode 12.4 Swift 5.3.2 iOS Deployment Target 14.4 iOS で位置情報を取得するにはCLLocationManagerを使用するのだが、iOS14から使い方が少し変更になったのでメモ。 1つ目がアプリが位置情報サービスの使用するための承認ステータスauthorizat…

MKAnnotation ピンの画像をカスタマイズする

検証環境: Xcode 12.4 Swift 5.3.2 iOS Deployment Target 14.4 マップ(MKMapView)上のピンの画像をデフォルトのものではなく別の画像にカスタマイズする方法について。 iOS11からマップビューにデフォルトでMKMarkerAnnotationViewが登録されているので、ma…

マップ(MKMapView)上にピンを立てる

検証環境: Xcode 12.4 Swift 5.3.2 iOS Deployment Target 14.4 マップ(MKMapView)を表示してピンを立てるだけの簡単な実装例。 マップビューにピンを追加するには、MKAnnotationプロトコルを適合したクラスを用意して、位置情報CLLocationCoordinate2Dを設…

git で別ブランチから特定のファイルを取得する

git

検証環境: git version 2.23.0 git で別ブランチから特定のファイルを取得する方法について。 ステージされている状態でファイルを取得する $ git checkout <別ブランチ名> path/to/file ステージされていない状態でファイルを取得する $ git show <別ブラ…

Swift - Struct のイニシャライザを Xcode で自動生成する

検証環境: Xcode 12.4 Swift 5.3.2 Swift の Struct にはデフォルトで暗黙的なイニシャライザ init メソッドが定義されているので自分で実装する必要ないのだが、public structで定義して別モジュールから import して使う場合は使用できない。 以下の Initi…

Swift - UIBezierPath でクーポン風画像のパスを描く

検証環境: Xcode 12.4 Swift 5.3.2 UIBezierPath のよるお絵描きシリーズ。 今回は UIBezierPath を使って、以下のようなクーポン用画像としてよく使われる図形をを描いてみる。 Playground コードサンプル import UIKit import PlaygroundSupport class Cou…

UICollectionViewCell の Self-Sizing で動的にセルサイズを調整する

検証環境: Xcode 12.4 Swift 5.3.2 UICollectionViewCell の Self-Sizing 機能でコンテンツに基づいて動的にセルサイズを調整する方法について。 まず今回 UICollectionView を使って実現したいレイアウトは横幅が画面幅(collectionView.frame.width)で、縦…

UICollectionView で複数 Section の Header と Footer を表示する

検証環境: Xcode 12.4 Swift 5.3.2 UICollectionView で複数セクションのヘッダーとフッターを表示する方法について。 StoaryBoard 設定 まず StoryBoard で Root View に UICollectionView 及び UICollectionViewCell のビューを設置しておく。 UICollectio…

メニューバーに常駐する masOS アプリを作る

検証環境: Xcode 12.4 Swift 5.3.2 メニューバーに常駐する簡単な masOS アプリを作ってみる。 まず Xcode のプロジェクト作成から macOS -> App テンプレートを選択する。 AppDelegate.swift ファイルに以下コードを書く。 NSMenu と NSMenuItem でメニュー…

macOS でのカーソル移動の高速化

macOS でのカーソル移動の高速化をシステム環境設定からではなくdefaultsコマンドで変更する方法について。 システム環境設定からキーのリピート、リピート入力認識までの時間ともに最速に設定しているが、defaultsコマンドを使うことでさらに高速化できる。…

Apple Pay にメルペイを登録する手順

Apple Pay にメルペイを登録したのでそのときのスクショメモ。 Wallet に追加された。

Apple Pay に Visa LINE Pay プリペイドカード(バーチャルカード)を登録する手順

Apple Pay に Visa LINE Pay プリペイドカード(バーチャルカード)を登録したのでそのときのスクショメモ。 Wallet に追加された。

UICollectionView でタグクラウド風のレイアウトを実現する

検証環境: Xcode 12.4 Swift 5.3.2 UICollectionView を使ってタグクラウド風にセルが並ぶレイアウトを実現したい。 UICollectionView のデフォルトのレイアウトである UICollectionViewFlowLayout をそのまま使うと以下のようにセル間にスペースが入ってし…

UICollectionView のセルサイズを指定しても反映されない時

検証環境: Xcode 12.4 Swift 5.3.2 UICollectionView のセルサイズを、 UICollectionViewFlowLayout.itemSizeプロパティ またはUICollectionViewDelegateFlowLayoutデリゲートのcollectionView(_:layout:sizeForItemAt:)メソッド を実装してセルサイズ(CGSiz…

UICollectionViewCell の横幅を計算する

検証環境: Xcode 12.4 Swift 5.3.2 UICollectionView のセルの横幅をいい感じに調整する方法について。 前提条件として、セルの並び方向はデフォルトのflowLayout.scrollDirection = .vertical、セルのサイズは正方形ですべてのセルが同じサイズであること。…

macOS ショートカットメモ

mac

環境: macOS Catalina 10.15.7 自分用の macOS ショートカットメモ。 Dock の表示・非表示 command + option + d or control + F3 ちなみに表示・非表示アニメーションの速度はdefaultsコマンドで変更できる。 $ defaults write com.apple.dock autohide-tim…

新生銀行のスマホ認証サービスの更新方法(iPhone)

ios

新しい iPhone に移行する際に一番面倒だった新生パワーダイレクトのスマホ認証サービスの更新についてのメモ。 新生銀行の新生パワーダイレクトでは、振り込みなどの取引時には Symantec の「VIP Access」アプリを使った認証を行う必要がある。 www.shinsei…

Array の indices を使って安全に添字アクセスする

検証環境: Xcode 12.3 Swift 5.3.2 配列に添字アクセスする場合、存在しないインデックスにアクセスすると Index out of rangeの例外が発生してしまうので、事前にインデックスが配列数の範囲内であるかをチェックする必要がある。 そういう場合に Array#ind…

UITabBar の中央のタブを大きな画像ボタンに変更する2

検証環境: Xcode 12.3 Swift 5.3.2 前回の記事の実装では問題が発生することが発覚したので実装方法を見直す。 xyk.hatenablog.com 問題というのは、UINavigationController のプッシュで画面遷移する時に、事前に遷移先 UIViewController の hidesBottomBar…

UITabBar の中央のタブを大きな画像ボタンに変更する

検証環境: Xcode 12.3 Swift 5.3.2 ※追記 この記事の実装方法では問題があることが発覚したので新しい記事で修正版を書いた。 xyk.hatenablog.com 多くのアプリでよく見かける、タブバーの中央に大きな画像ボタンを配置する方法について。 やり方はいろいろ…