ObjecTips

基本Objective-Cで iOS とか OS X とか

Objective-C と Swift の App Store 配布時のファイルサイズの違い

概要 元々 Objective-C のみで作られたアプリでライブラリに Firebase と自前の Objective-C Framework を複数含む。 これに Swift クラスを3つ(3ファイル)追加しアーカイブしたものを iTunes Connect にアップロードして「App Store ファイルのサイズ」か…

等幅フォントのリスト iOS monospace font

iOS で使える等幅フォントどれだっけな?てのをたまに知りたくなる。 検索しても引っかからないなーと思ったら gist に放り込んだまま(4年も前に!)でブログに書いてなかった模様。てことで記事化しておく。 iOS UIKit, macOS AppKit, どちらでも利用可能…

DebugLog を応用した DebugBlock

DebugLog 良く見かける技で、デバッグビルド時のみ出力されるログを以下の様に定義出来る。 #if DEBUG #define DebugLog(...) NSLog(__VA_ARGS__) #else #define DebugLog(...) #endif Before #if DEBUG NSLog(@"debug message"); #endif After DebugLog(@"d…

画像のExifデータの取得方法と取得データの比較 iOS

検証環境 Xcode 9.2, iOS 11.2 Simulator iOS 11.1 iPhone X の背面カメラで撮影したものを AirDrop で Mac に送ってシミュレータ経由で iCloud Photo Library に取り込んだ写真を用いてデータを確認 Exifの取得 まず取得方法をざっくり Exif等のデータをプ…

システムと同じ並びに日本語の文字列をソートする

NSString の比較メソッド一覧 - (NSComparisonResult)compare:(NSString *)string; - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareO…

UIActivityViewController からメールが呼び出された時の statusBarStyle の調整

UIActivityViewController からメールが呼びだされた時に statusBarStyle が常に UIStatusBarStyleDefault で黒文字になってしまう。通常は問題無いがアプリのデザインでナビゲーションバーやボタン類に色を付けている場合、ステータスバーの文字色とマッチ…

iOS 11 での UIImagePickerController の変更点

iOS 10 までは UIImagePickerController と UIImagePickerControllerSourceTypePhotoLibrary の組み合わせでフォトライブラリを表示する際にアクセス権限の確認を自動で行ってくれていた。 アクセス権限がなければ鍵マークが表示され一切の情報を取得する事…

Core Dataのデータベースの保存場所を切り替える

保存場所を固定的に変更する方法は前回の記事を参照 koze.hatenablog.jp 今回の保存場所の切り替えというのは既に使用している A.sqlite ファイルから別の B.sqlite を使用するようにしたりまた A.sqlite に戻したりするという意味での動的な切り替え。 利用…

NSPersistentStoreDescription のデフォルト値とカスタマイズ

iOS 10で導入された NSPersistentContainer を使うとCore Dataのセットアップのコードがずいぶん短くなる。Xcode のテンプレートはこんな感じ - (NSPersistentContainer *)persistentContainer { @synchronized (self) { if (_persistentContainer == nil) {…

Xcode 9 で無線で開発 Wireless Debugging

WWDC 2017 にて Xcode 9 ではUSB接続無しで無線で繋いで開発出来るって話が出ていたけど、何の気なしに Xcode 9 を起動しても同じLAN内の iPhone がビルドターゲットに出てこないので調べてみたらすぐにやり方が分かった。 WWDC 2017 Session 404 の6分20秒…

PDFView の表示設定まとめ

関連記事 koze.hatenablog.jp ※ iOS 11 beta 時点での検証です 検証コード - (void)viewDidLoad { [super viewDidLoad]; PDFView *view = [[PDFView alloc] initWithFrame:self.view.bounds]; view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UI…

Vision Framework で水平角検出(傾き) Horizon Detection

iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Foundation の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips iOS 11 Core Image の変更点 - ObjecTips koze.hatenablog.jp Horizon Detection V…

iOS 11 Core Image の変更点

iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Foundation の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips Vision Framework でテキスト検出 Text Detection - ObjecTips Vision Framework …

iOS 11 PDFKit

iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Foundation の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 Core Image の変更点 - ObjecTips Vision Framework でテキスト検出 Text Detection - ObjecTips Visio…

iOS 11 Messages Framework の変更点

iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Foundation の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips iOS 11 Core Image の変更点 - ObjecTips Vision framework でテキスト検出 TextDetection - ObjecTips Vision Framework で水平角検…

Vision Framework でテキスト検出 Text Detection

iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Foundation の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips iOS 11 Core Image の変更点 - ObjecTips koze.hatenablog.jp Vision Framework iO…

iOS 11 Foundation の変更点

Foundation | Apple Developer Documentation Foundation 周りざっくり、網羅はしていない。 iOS 11 関連記事 iOS 11 UIKit の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips iOS 11 Core Image の変更点 - …

iOS 11 UIKit の変更点

UIKit | Apple Developer Documentation UIKit 周りざっくり、網羅はしていない。 iOS 11 関連記事 iOS 11 Foundation の変更点 - ObjecTips iOS 11 Messages Framework の変更点 - ObjecTips iOS 11 PDFKit - ObjecTips iOS 11 Core Image の変更点 - Objec…

App Storeでレビューする機能を実装する

iOS 10.3から登場する SKStoreReviewController のドキュメントにApp Storeのレビュー画面を直接開く方法がしれっと記載されている。 https://developer.apple.com/reference/storekit/skstorereviewcontroller/2851536-requestreview アプリのURLのクエリに…

UIImageView の画像をフェードインアウトさせて変更する

UIImageView に画像を設定する際にフワッとフェード(ディゾルブ)するようにするには、CALayer に CATransition のアニメーションを加えてやる コードは以下 UIImageView *imageView = self.imageView; imageView.image = image; // 画像を変更 [imageView.…

CATiledLayer のフェードインエフェクトを解除する

CATiledLayer は表示時にデフォルトでフェードインエフェクトがかかるが CATiledLayer のサブクラスを作って以下のクラスメソッドをオーバーライドして 0 秒を返してやる事でフェードインしないようにする事が出来る。 + (CFTimeInterval)fadeDuration; 実装…

カメラで撮影した写真と動画を Photos.framework でライブラリに保存する

撮影は UIImagePickerController にお任せして撮影後のデータを Photos で保存する実装方法。 まず UIImagePickerController に sourceType でカメラ撮影を指定。 デフォルトのままだと写真撮影しかできないので、カメラ撮影で利用可能な形式を全て設定して…

Xcode プロジェクトの watchOS 1 から watchOS 2 への移行

watchOS 1 から watchOS 2 への移行は、Xcode のプロジェクトを選択して Editor > Validate Settings... を選択して Xcode にお任せてプロジェクト更新するのが良い。 でもなぜかこの時に watchOS の移行についての項目が出てこなくてプロジェクトがうまくア…

自作の iOS Framework を watchOS に対応させる

自作Farmework内で watchOS で利用できないAPIを使っていると not available on watchOS のエラーが出て watchOS 向けにビルドできない。 Apple純正の Framework と同じようにヘッダのメソッド定義に __WATCHOS_PROHIBITED を付けて watchOS では使えません…

NSString の真偽値の判定

NSString で表される文字列の真偽値を判定するには boolValue メソッドが使える。 @property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0); 数字、YES/NO、true/false などの文字列を boolValue メソッドで判定できる NSLog(@"%d", @"1".boolValue); …

Touch IDのエラーまとめ

LAContext の以下のAPI - (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply; このAPIで指紋認証の LAPolicyDeviceOwnerAuthenticationWithBiometrics …

ターミナルでUUIDを生成する

iOS, macOS でプログラム内でUUIDを使う場合 CFUUID か NSUUID が使える。 プログラム外で識別子としてUUIDが欲しい時は uuidgen というコマンドが用意されているのでこれを使う。 ターミナルで $uuidgen 結果は以下のように生成されたUUIDが表示される 14B7…

Google Firebase で既存の AdMob アカウントを使う

新たに作成したFirebaseアカウント(GoogleアカウントA)で今まで使っていた既存のAdMobアカウント(別のGoogleアカウントB)を引き続き使いたいというパターンの手順。 *1 *2 GoogleアカウントAでFirebaseにログイン 新規プロジェクトを作成 歯車アイコンか…

Google Firebase で Crash Reporting を使う

まず初めに 後からこの issue で分かった事だけど https://github.com/firebase/quickstart-ios/issues/13 Google Cloud Platform の利用規約に同意しておかないと下の手順の dSYM アップロード用のアカウントの作成やその権限付与でサーバエラーが起きて進…

Bitcode対応のアプリでクラッシュレポートを使う際の注意

アプリをBitcode対応してリリースしたら Crashlytics でクラッシュレポートが表示されなくなってしまった。 ダッシュボードには dSYMs が見当たらないとのメッセージが。 Found 1 unsymbolicated crash from missing dSYMs in 1 version in the last 24 hour…