開発-iOS
iPadアプリを縦画面固定にしたいけれど、なぜかクルクル回転してしまう。Device Orientationを確認してもPortrait(縦)しかチェックされていない。 Info.plistを開くと下記のようになっていた。XcodeでみるInterface Orientation設定はiPhoneでしか有効になら…
いまどきのiOSアプリでのログイン画面ってどんなかんじなんだろう?と考えてみた。本記事ではデザイン的な話ではなくて、内部の実装的な部分について言及しています。 結論としては、あまり小難しいことをしなくても、 ユーザーIDを入力するUITextField の t…
2019年8月8日にAdMobから一通のメールが届いた。 AdMob は app-ads.txt のサポートを開始します app-ads.txt 導入の準備はお済みですか? え、なにそれ。app-ads.txtってなに? 突然 app-ads.txt 導入の即時対応を求められる まさかの即日対応を求められる。…
UISearchBarのTextField部分の背景色を変更できなくて頭をひねった…… UISearchBarのTextFieldの背景色を変更する 下記のコードで対応することができた。 extension UISearchBar { var textField: UITextField? { return value(forKey: "searchField") as? UI…
Googleドキュメントのスプレッドシートから、iOSアプリ向けの Localizable.strings と Androidアプリ向けの strings.xml を作成するツール「csv2strings」を作成しました。 csvファイルからiOSとAndroidの文字列リソースを作成するという二番煎じのツールで…
文字列を格納した配列があり、Swiftを使って特定の文字列が格納されているインデックスが知りたいことがあります。 let list = [ "松平", "上杉", "木下", "津田", "島津", "木下", "尼子" ] let foundItems = list.enumerated() .filter({ $0.element == "…
Swiftでマスク画像を使って、UIImageの画像を切り抜きたい(マスキングしたい)と思います。 マスク画像を使って切り抜く マスク画像を使って切り抜くのは昔からありますが、UIImageView#tintColorが使えるようになったこともあり、最近実装することがありませ…
MapKitのMKMapViewを使って地図を表示するアプリを開発しています。 MKAnnotationViewを継承した CustomAnnotationView をタップしても MKMapViewDelegate#mapView(_:, didSelect:) が呼ばれず困っていました。 タップしてもdidSelectが呼ばれない ハマった…
(2019/09/14追記)大昔に「UICollectionViewの初期表示時にズレる - 酢ろぐ!」でも同じ現象でハマっていたらしい。 UICollectionViewのカスタムセル上のViewが綺麗な正円形にならない UICollectionViewでAuto Layoutを使ったカスタムセル上で円形のViewを表…
SwiftでWKWebViewを使って全面WebView画面を作りました。 WKWebViewを使って全面WebView画面を作る import UIKit import WebKit class WebViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UI…
60枚のカードを偏りなくランダムに並び替える方法として、「Fisher-Yates shufflアルゴリズムを用いて自作で配列をシャッフルさせる - Qiita」で紹介されているFisher-Yatesシャッフルアルゴリズムが有名です。調べたらWikipediaでより詳細に「フィッシャー–…
大昔に「Xcodeでのビルドを自動化するxcodebuildコマンドとIPAファイルを作成してiTunes Connect(Testflight)に投げる方法 - 酢ろぐ!」で書いたように、Jenkinsからxcodebuildを叩いてipaを作成しています。つい最近AdHocビルドで生成したipaファイルに含ま…
僕がTwitterのアイコンに使っているのは、嫁が生み出したインコとネコのハイブリットミュータント「インコネコ」です。このアイコンに変えてから、かれこれ数年経っている気がしますが名前があったことにビックリしました。一昨日名前を聞きました。 このイ…
「TestFlightアプリのBundle IDがわからないか?」と聞かれたので調べる方法を調べました。 本記事執筆時点で確認できた方法で、将来的に同様に調べることができるかについてはわかりません。 Bundle IDの調べ方 Google等で検索してアプリのidを調べる TestF…
Apple Watch Series 4が今日届いたので、ペアリングさせるためにiPhoneの方もiOS 12にアップデートすることにしました(諸事情によりXcodeは今もアップデートできていません)。 デバイスをiOS 12にアップデートして、ホームに表示されるアプリ名が正しく表示…
iOSで現在の位置情報を1回だけ取得したい場合には LocationManager#requestLocation()を利用します。OS側で測位が完了すると、LocationManager#locationManager(manager:didUpdateLocations:) で位置情報を受け取ることができます。 どれくらいの精度だとど…
開始日と終了日だけを渡された状況で、開始日と終了日から間にある年月日を求める方法を紹介します。 翌日の求め方 指定された日付から翌日(次の日)を求めるにはCalendar#date(byAdding:value:to:)を使います。 let today = Date() let tomorrow = Calendar.…
諸事情があって、Apple Developer ProgramなアカウントAで作成していたAd-Hocアプリを、Apple Developer Enterprise ProgramなアカウントBで作り直すことになりました*1。 作り直すといっても署名関係だけの問題で、すんなりとProvisioning Profileを変えて …
特定の画像をUIImageViewやUIButtonで表示させると一部分を伸ばして表示したような……9patchみたいな表示がされていた。Images.xcassetsから特定の画像を削除して、再度追加したところ問題は発生しなくなった。 gitで差分を確認するとImages.xcassets/button_…
「目的地に近づいたよー」的なことができるのがジオフェンス機能です。アプリを閉じていても反応するのでとても便利と聞いたので実装してみました。 LocationManagerで位置情報を取得する ジオフェンス機能を実装する コード アプリが起動していなくても処理…
iOS 11から大きなタイトルが使えるようになりました。 UINavigationBarの大きなタイトルを使っている時に、UITableViewをスクロールさせると稀に画面タッチができなくなる問題が発生しています。発生確率はかなり低くて何が原因で発生するのかがわかっていま…
久しぶりにiOSネタを投稿するような気がします。iOS 11からUINavigationBarに大きいタイトルが追加されました。 テーブルビューをスクロールさせた時に自動的に小さいタイトルに切り替わって欲しいので、largeTitleDisplayModeに.automaticを設定しています…
久しぶりに汎用的なネタが書けそうです。本記事ではUITabBarのUITabBarItemの文字を消して画像だけを表示する方法を紹介します。 UITabBarで文字を消して画像だけを表示したい デザインガイドラインでは、通常タブバーはアイコンと項目名とをセットにして扱…
iOS/AndroidアプリでCode128のバーコードを生成する必要がでてきました。iOS 8.0くらいから標準APIだけで二次元コードの読み取りと生成ができるようになっていたようです。 昔からバーコード生成といえばZXingみたいなところがありましたよね。遡って調べて…
僕の頭の中でいつも悩むことを明文化してみました。まだ体系化できていないし検証が必要なものも多いです。不足があったり対処方法が間違っているかもしれませんので、その時は教えてくださると嬉しいです。 そもそもUDIDが間違っているかもしれないケース U…
久しぶりにXcodeビルドマンとして活動していました。 少し前までは、In-Houseなバイナリばかりビルドしていたので特に意識していなかったのですが、最近Ad-Hocなバイナリをビルドする機会が増えてきました。色んな方のUDIDを頂いてApple Developer Centerに…
Xcode 9 GM SeedでIn-HouseなアプリをJenkinsでビルドさせるときにエラーが発生しました。 Xcode 9 GM SeedでJenkinsのビルドに失敗するようになってしまった Jenkinsのコンソールログを見ると、Archiveには成功しているけれどExportに失敗しているログでし…
iPhone X シミュレータで上下の黒帯が入ってアプリ領域が欠ける現象が発生しました。 iPhoneでは互換性を保つための仕組みがあって、例えばiPhone 5が登場した時にアプリを起動すると上下の黒帯が入る現象がありました。4.7インチRetinaディスプレイに対応さ…
Xcode 9 GMをインストールしました。 ikatomo2をビルドしようと試みました。Realmを使っているのですがRealmの部分で下記のようなエラーが発生しました。 /MY_APP/db/Database.swift:10:8: Module compiled with Swift 3.1 cannot be imported in Swift 3.2:…
Xcode 9 GMをインストールして、carthage updateを実行したらエラーが発生した。 $ carthage update Carthage requires git 2.3.0 or later. 先に結論を書くと、原因はXcode.appのパッケージの名前を変更していたからでした。 Xcode 9 GMをXcode.appとしてま…