iOS

UISearchBarのデフォルトの背景色は `UIColor.tertiarySystemFill`

tertiarySystemFill | Apple Developer Documentation Use system fill colors for items situated on top of an existing background color. System fill colors incorporate transparency to allow the background color to show through. Use this color …

UIButton.Configuration.Sizeの各サイズごとのデフォルト状態での高さ

iOS

iOS 16.1シミュレーターで確認してみた。 @2x @3x UIButton.Configuration.Size.large 50.5 50.33… UIButton.Configuration.Size.medium 34.5 34.33… UIButton.Configuration.Size.small 28 28 UIButton.Configuration.Size.mini 28 28 特別にHuman Interfac…

iOSシミュレーター・Androidエミュレーターにアプリをインストールだけする(起動までしない)方法

なぜ アプリの初回起動時専用の特別な処理や画面遷移を行うケースで、そのデバッグ実行・動作確認をするため。 iOS まずインストールするためのアプリは Build For Running でビルドしておく。次にシミュレーターを起動しておいて xcrun simctl install boot…

Mockolo 1.7.0のビルド済みバイナリがarm64にしか対応していない

iOS

https://github.com/uber/mockolo/releases/download/1.7.0/mockolo.tar.gz に含まれる mockolo バイナリがarm64アーキテクチャーにしか対応していなかった。これだとAppleシリコンMacでは実行できるが、Intel Macでは実行できない。 $ file mockolo mockolo…

FirebaseのSwiftPM対応に伴ってGoogle Tag ManagerもSwiftPMでインストールできるようになっていた

iOS

iOS(ないしAppleプラットフォーム全般)のFirebaseといえばこれまでインストール方法はCocoaPodsが基本だったが、バージョン8.0.0からSwiftPMでもインストールできるようになっている。 https://firebase.google.com/docs/ios/installation-methods#swift-p…

App Storeの定期購読・無料トライアルの基準タイムゾーンはUTC

iOS

App Store Connectのドキュメント(ヘルプページ)にはこうあります: 自動更新登録は、1 か月間の日数ごとではなく、最初の購入の暦日と同じ日に更新します。たとえば、カスタマーが 1 か月の無料トライアルを 1 月 7 日に開始する場合、トライアルが終了す…

和暦と改元とうるう年が組み合わさったバグの思い出

iOS

あけましておめでとうございます。新年一発目の投稿は2019年の思い出です。 そういえば去年面白かったバグで、とある有効期限チェックで、2019年8月から半年後の月末が2020年2月末、つまり閏年なので2月29日になるのだけど、よくある和暦バグと組み合わさっ…

2019年のSwiftモック事情

こんにちは、id:ikesyoです。これは はてなエンジニア Advent Calendar 2019 17日目のエントリーです。 昨日12月16日(月)に行われた 年末だよ Android/iOS Test Night - 2019 にて、『2019年のSwiftモック事情』という発表をしました。 Swiftでテストのた…

iOSDC Japan 2019でXCFrameworksのLTをします

iOS

こんにちは。iOSDC Japan 2019の0日目参加のため東京に上陸しております id:ikesyo です。明日1日目の16:15からTrack Bで『5分でわかる!Xcode 11から使えるXCFrameworks』というタイトルでLTをします。 どういう内容かは紹介文を読んでいただきつつ、先月行…

Xcode 11で導入されるxcframeworkのディレクトリ構造

WWDC19でお目見えしたXcode 11ですが、ライブラリ・フレームワークの配布形態として .xcframework という新しいフォーマットが導入されています。 https://developer.apple.com/documentation/xcode_release_notes/xcode_11_beta_release_notes/#3318305 XCF…

CocoaPods 1.7.0からSpecsのソースにCDNを使えるようになります

先日リリースされたCocoaPods 1.7.0.beta.1で、実験的機能としてSpecsのソース(パッケージ定義であるpodspecファイルのセントラルリポジトリ)にCDNを利用できるようになりました。 CocoaPods 1.7.0 Beta! - CocoaPods Blog 今までは、ソースとして https:/…

既存iOSアプリへのReact Native導入とcocoapods-fix-react-native

既存iOSアプリへのReact Native導入は公式にドキュメントが用意されている Integration with Existing Apps · React Native その手順に従うと、React Nativeの依存解決にはCocoaPodsを使うようになっている 一方 react-native init で新規にプロジェクトを作…

『iOS 11 Programming』の執筆に参加しました&一般販売開始

技術書クラウドファンディングのPEAKSのプロジェクトとして成立した『iOS 11 Programming』に、執筆陣の一人として参加させていただき、先日完成を迎えることができました。また本日からクラウドファンディング参加者に限らない一般販売が開始されました。 i…

関西モバイルアプリ研究会 in 関東で発表しました #関モバ

普段は京都や大阪で開催されている関モバが東京に上陸した!ということで発表してきました。 UISearchBar / UISearchController は結構カスタマイズしにくかったり、iOS 10とiOS 11で見た目が大きく変わり得たり、iOS 11で追加された UINavigationItem.searc…

Carthage 0.13/0.14をリリースしていました

前回のエントリーに引き続き、Carthage 0.13 および 0.14をリリースしていました。どちらもバグFixメインのリリースですが、0.13ではcarthage other-commandとすると$PATHに存在するcarthage-other-commandを実行するという、いわゆるサブコマンドの機構を実…

Carthage 0.12をリリースしました

昨年のエントリーに書いたように、Carthageのコミッターをしているid:ikesyoです。もう3日前になりますが、最新バージョンの 0.12: All Your Frameworks Are Belong To Usがリリースされました! 今回のリリースで大きなトピックだと個人的に思う以下の3つを…

2015年を振り返ってみる

2015年も残すところあと数時間。aikoの年越しライブ Love Like Pop 18に向かっている途中/開演待ちに書いています。 色んなところで振り返りエントリーが流れているので、自分も振り返ってみようかと書いてみます。 フリュー 昨年10月から業務委託としてフリ…

関西モバイルアプリ研究会 #5 でCarthageの話をしてきました #関モバ

毎月恒例の関西モバイルアプリ研究会 #5で今回も発表させていただきました。会場とに軽食を提供してくださるはてなさんに多謝 今回の資料はこちら。 Carthageについて知りたいn個のこと from Syo Ikeda CocoaPodsと並ぶ依存性管理ツールとして普及が進みつ…

関西モバイルアプリ研究会 #4 でLTしてきました #関モバ

第1回から参加させていただいている関西モバイルアプリ研究会 #4でLTをしてきました。なんだかんだでGoogle I/O ・ WWDC 特別会だった#3以外の3回全てで発表できていて嬉しい限りです! 以下が発表スライドです。 iOSでのFramework導入のおさらい #関モバ fr…

Carthageのコミッター(Collaborator)になりました

先月の2015年6月に、CarthageというCocoaプラットフォーム(iOS/OS X/watchOS)用の依存性管理ツールのコミッター(Collaborator)になりました。 このプロジェクトは元々ReactiveCocoa 3.0のAPIを洗練させるためのショーケースとして始まったという側面もあり、…

Swiftでジェネリックなメソッドの特殊化を行う方法

今日色々とやり取りをしながら、Swiftでのジェネリックなメソッドについてある知見を得たのでまとめておきます。 @_ishkawa @akisutesama gistにコメントしたんですが、型自体をT.Typeとしてパラメータで渡させるのはどうですか— Syo Ikeda / いけしょー (@i…

逆引きReactiveCocoa: 固定値をRACSignalでラップする

非常に基本的なことですが、あまりはっきりと触れられていない(触れる必要がない?)のが、単純に固定値をラップしたシグナルを生成するケースです。方法自体は単純で、以下のようなメソッドが用意されています。 // 値の場合 RACSignal *singleValueSignal…

ACAccountStoreのReactiveCocoaラッパーを作った

タイトルのままですが ikesyo/ReactiveAccountStore というAccounts.framework (ACAccountStore) のReactiveCocoaラッパーを作ってみました。 現時点では、以下の4つの非同期メソッドのRACSignalラップ版をサポートしています。 -requestAccessToAccountsWit…

VTAcknowledgementsViewControllerのStoryboardサポートを改善した

Pull requestしたらローカライズ依頼された - [yashigani days] などで知ったVTAcknowledgementsViewControllerというライブラリがあります。CocoaPodsが自動生成してくれる各ライブラリのライセンス表記をまとめたファイルをうまいことアプリ内で画面表示し…

UAObfuscatedString / バイナリ上での文字列難読化ライブラリー

UrbanApps/UAObfuscatedString NSLog(@"%@", @"".T.h.i.s._.i.s._.a._.t.e.s.t.dot); > This is a test. NSString *identifier = @"".c.o.m.dot.u.r.b.a.n.a.p.p.s.dot.e.x.a.m.p.l.e; サンプルを見れば分かるように、NSStringのカテゴリーとして英数字や記…

Objective-CのランタイムAPIをReactiveCocoaで解説する

iOS Advent Calendar 2013 14日目担当の @ikesyo です。 Function Reactive Programming Framework - Reactive Cocoa | Cocoaの日々情報局 iOS - ReactiveCocoaについて - Qiita [キータ] ReactiveCocoaのまとめ資料 - Qiita [キータ] Objective-C - Reactiv…

逆引きReactiveCocoa: シグナルにイベント発生時に対する処理を挟み込む

ReactiveCocoaのドキュメントにもあるように、-do...系のメソッドを使用すると、シグナルを購読せずに副作用を挟み込むことができます。 RACSignal *newSignal = [[[signal doNext:^(id x) { NSLog(@"next"); }] doError:^(NSError *error) { NSLog(@"error"…

逆引きReactiveCocoa: 毎時0分に処理を行う

元ネタ: ios - Perform action on the hour, every hour, with ReactiveCocoa - Stack Overflow 現在時刻から1時間毎だと毎時0分とならないので、まずは次の時までの分を得ておきます。 NSDateComponents *components = [[[NSCalendar sharedCalendar] calen…

逆引きReactiveCocoa: @YES/@NOをトグルで送るRACCommandを用意する

元ネタ: Command which sends alternating YES/NO values · Issue #767 · ReactiveCocoa/ReactiveCocoa ボタン・ジェスチャーなどのUI操作とRACSignalを仲介するクラスとしてRACCommandがあります。これを用いて、状態(フラグとなるインスタンス変数/プロパ…

逆引きReactiveCocoa: シグナルの現在の値だけでなく、直前の値にアクセスする

元ネタ: How to obtain KVO old value using ReactiveCocoa 2.0 API? · Issue #762 · ReactiveCocoa/ReactiveCocoa KVOのオプションを使用する場合 ReactiveCocoaではRACObserve()マクロによってKVOを非常に簡単に扱うことができますが、それだけでは、通常…