2016-01-01から1年間の記事一覧
UIImageView に画像を設定する際にフワッとフェード(ディゾルブ)するようにするには、CALayer に CATransition のアニメーションを加えてやる コードは以下 UIImageView *imageView = self.imageView; imageView.image = image; // 画像を変更 [imageView.…
CATiledLayer は表示時にデフォルトでフェードインエフェクトがかかるが CATiledLayer のサブクラスを作って以下のクラスメソッドをオーバーライドして 0 秒を返してやる事でフェードインしないようにする事が出来る。 + (CFTimeInterval)fadeDuration; 実装…
撮影は UIImagePickerController にお任せして撮影後のデータを Photos で保存する実装方法。 まず UIImagePickerController に sourceType でカメラ撮影を指定。 デフォルトのままだと写真撮影しかできないので、カメラ撮影で利用可能な形式を全て設定して…
watchOS 1 から watchOS 2 への移行は、Xcode のプロジェクトを選択して Editor > Validate Settings... を選択して Xcode にお任せてプロジェクト更新するのが良い。 でもなぜかこの時に watchOS の移行についての項目が出てこなくてプロジェクトがうまくア…
自作Farmework内で watchOS で利用できないAPIを使っていると not available on watchOS のエラーが出て watchOS 向けにビルドできない。 Apple純正の Framework と同じようにヘッダのメソッド定義に __WATCHOS_PROHIBITED を付けて watchOS では使えません…
NSString で表される文字列の真偽値を判定するには boolValue メソッドが使える。 @property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0); 数字、YES/NO、true/false などの文字列を boolValue メソッドで判定できる NSLog(@"%d", @"1".boolValue); …
LAContext の以下のAPI - (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * __nullable error))reply; このAPIで指紋認証の LAPolicyDeviceOwnerAuthenticationWithBiometrics …
iOS, macOS でプログラム内でUUIDを使う場合 CFUUID か NSUUID が使える。 プログラム外で識別子としてUUIDが欲しい時は uuidgen というコマンドが用意されているのでこれを使う。 ターミナルで $uuidgen 結果は以下のように生成されたUUIDが表示される 14B7…
新たに作成したFirebaseアカウント(GoogleアカウントA)で今まで使っていた既存のAdMobアカウント(別のGoogleアカウントB)を引き続き使いたいというパターンの手順。 *1 *2 GoogleアカウントAでFirebaseにログイン 新規プロジェクトを作成 歯車アイコンか…
まず初めに 後からこの issue で分かった事だけど https://github.com/firebase/quickstart-ios/issues/13 Google Cloud Platform の利用規約に同意しておかないと下の手順の dSYM アップロード用のアカウントの作成やその権限付与でサーバエラーが起きて進…
アプリをBitcode対応してリリースしたら Crashlytics でクラッシュレポートが表示されなくなってしまった。 ダッシュボードには dSYMs が見当たらないとのメッセージが。 Found 1 unsymbolicated crash from missing dSYMs in 1 version in the last 24 hour…
GitHub製のエディタAtomでplistを開くとデフォルトでは Property List (Old-Style) として開かれるが、今時のplistファイルはOld-Style形式ではなくXML形式なので syntax error になってしまう。 メニューの Edit>Select Grammar かウィンドウ右下のフォーマ…
watchOSとiOSでデータのやり取りをしている場合のwatchOS 1からwatchOS 2への置き換え例 watchOS watchOS 1 [WKInterfaceController openParentApplication:userInfo reply:^(NSDictionary *replyInfo, NSError *error) { if (error) { } else { } }]; watch…
Playground で delegate メソッドを扱うにはどうする? delegate が呼ばれるクラスの実装が必要、Playground でクラス定義できるの? というあたりが疑問だったけど Playground でも普通にクラス定義が可能で delegate も試せるらしい。 下記の前回のコード…
Playground を使って簡単なオーディオ再生のテストを行う。 スニペットを実行確認するのにいちいちダミーのアプリを作ったりしなくていいのが Playground の便利なところ。 Playground なので言語は Swift まずババッと以下のコードを書いてみる。 オーディ…
iOS の言語設定の言語一覧画面と同じような画面を作ろうと思って実装してみたら中国語の場合に思い通りにいかなかったメモ iOS の言語設定の言語一覧画面 cell.textLabel.title には現地語でのローカライズ表記 cell.detailTextLabel.title にはシステム言語…
現在一番新しいローカライズの方法が XLIFF を使ったプロジェクト全体のローカライズになる。 この方法は Base Internationalization 方式でのローカライズを想定している。 Xcode のプロジェクトナビゲーターでプロジェクトを選択した状態でメニューから Ed…
前回 今回は前回の ibtool を使ったローカライズの話の続き ibtool には incremental localization という機能がある。 コマンドの形式 ibtool --previous-file <old_file> --incremental-file <old_translated_file> --localize-incremental --write <new_translated_file> <current_modified_file> --previous-file <old_file> には翻訳元の古いフ</old_file></current_modified_file></new_translated_file></old_translated_file></old_file>…
サンプルに使用する Main.storyboard ファイルは ViewController の上に1つ UILabel が載っているだけの状態 storyboard ファイルの中身のXMLは以下
genstrings は C や Objective-C のソースコードファイルから .strings ファイルを生成するユーティリティで、以下のマクロと関数を Localizable.strings に書き出してくれる。 NSLocalizedString("key", comment); CFCopyLocalizedString("key", comment); …
plutil -- property list utility コマンドで Localizable.strings (strings file format) を読み込む事が出来るらしいので試してみる。 元ファイルは以下 /* Localizable.strings Test */ "Yes" = "はい"; "No" = "いいえ"; "Cancel" = "キャンセル"; "Titl…
ローカライズに用いる Localizable.strings ファイルは NSDictionary で簡単に読み書きができる。 例えば以下のような Localizable.strings があった時 /* Localizable.strings Test */ "Yes" = "はい"; "No" = "いいえ"; "Cancel" = "キャンセル"; "Title" …
リーディングリスト周りのAPIを使って何が出来るのか調査。 Framework は SafariServices.framework でリーディングリスト周りのクラスは SSReadingList のみ。 API は以下 イニシャライザ + (nullable SSReadingList *)defaultReadingList; - (instancetype…
前記事の iOS と同じく β3 での変更点に限らず watchOS 2.2 から watchOS 2.3 で今のところ追加予定のものを調査。 (網羅はしてない) 以下ドキュメント watchOS 2.2 API Diffs / watchOS 2.1 to watchOS 2.2 API Differences https://developer.apple.com/…
β3 での変更点に限らず iOS 9.2 から iOS 9.3 で今のところ追加予定のものを調査。 (網羅はしてない) ドキュメントは以下2つ iOS 9.3 API Diff / iOS 9.2 to iOS 9.3 API Differences https://developer.apple.com/library/prerelease/ios/releasenotes/Ge…
前回 前回の結果を踏まえて copy: メソッドもオーバーライドして挙動をカスタマイズする事にする。 簡単なのは copy: メソッドの super の挙動を呼び出してペーストボードの中身を作ってから自前で追加したいものを加える方法。 実装 - (void)copy:(id)sende…
OS Xでの挙動 OS Xの NSTextView には - (void)paste:(id)sender; - (void)pasteAsPlainText:(id)sender; - (void)pasteAsRichText:(id)sender; これらのメソッドがあって、システムのペーストの挙動をそのまま使う事もできるしプレーンテキストやリッチテキ…
上記の記事ではJSONファイルの書き出し保存を行った。 iOS でデータを扱う際には JSON より plist の方が読み込みが簡単なので plist 形式でのファイル保存もさらっておく。 plist の書き出しは NSArray or NSDictionary を writeToFile:atomically: で書き…
前回 前回のコードではエクセルの1行目の colums が固定長で key も固定の値として実装されていた。 これを改良して可変長に対応するよう修正してみた。 シートが何行何列あってもシート全体を一括して JSON に変換できる。 以下の決まり事で実装 シートの1…
以前 NSCharacterSet の decimalDigitCharacterSet メソッドを使って文字列が数字のみを含んでいるかを調べるコードを書いた。 ここに少しコードを追加して文字列がローカライズとフォーマットされた数字表記のみを含んでいるかどうかを調べるコードにする。…