ObjecTips

Swift & Objective-C で iOS とか macOS とか

Tips

Apple Watch の対応言語 その2

前記事は以下 Apple Watch の対応言語 - ObjecTips この記事から程なくして Watch OS 1.0.1 で対応言語が増えた。 追加された言語は以下 日本語表記 母国語表記 オランダ語 Nederlands ポルトガル語(ブラジル) Português (Brasil) デンマーク語 Dansk スェ…

発着信と通話の開始停止を検出する

前回に続き CoreTelephony のネタ 携帯キャリアの情報を取得する - ObjecTips CoreTelephony を使って電話の発着信と通話の開始停止を検出できる。 コールバックはアプリがアクティブな時に受け取れる。 CTCallStateIncoming 電話がかかってきた時 CTCallSta…

携帯キャリアの情報を取得する

CoreTelephony.framework を使えばできるらしい。知らなかった。 CTTelephonyNetworkInfo をインスタンス化して subscriberCellularProvider メソッドを呼べば CTCarrier でキャリア情報が取得できる。 CTCattier にはキャリア情報に関するいくつかのプロパ…

NSFormatter クラス まとめ

Framework クラス OS X iOS 用途 Foundation NSNumberFormatter 10.0 2.0 数値 Foundation NSDateFormatter 10.0 2.0 日付 Foundation NSByteCountFormatter 10.8 6.0 Byte,KB,MB,GB 等 MapKit MKDistanceFormatter 10.9 7.0 メートル、ヤード、キロ 等 Foun…

Photos.framework でカメラロールを取得する

Photos.framework でカメラロールを取得する方法が分かり辛かったので備忘 fetchAssetCollectionsWithType:subtype:options: メソッドの引数の type で PHAssetCollectionTypeAlbum を指定した場合、写真アプリで作成したものとiTunesで同期したアルバムの一…

スクリーンショットを検出する

iPhone のホームボタンとロックボタン同時押しでのスクリーンショットを検出する UIApplicationUserDidTakeScreenshotNotification が iOS 7 で追加されている。 これを使えばスクリーンショットを検出できる。 [[NSNotificationCenter defaultCenter] addOb…

WatchKit App の表示名

WatchKit App の表示名を変える時の備忘 表示 設定 iPhoneのApple Watchアプリ内 iOSアプリ(親アプリ)のCFBundleName*1 Apple Watchでのアプリ起動時 WatchKit AppのCFBundleName or CFBundleDisplayName*2 iPhone の Apple Watchアプリにはなぜか CFBundl…

Share Extension の ConfigurationViewController を投稿画面のようにブラー表示する

ピンポイントなタイトルだけど Share Extension の実装の際にこれはやっておきたいなという事で。 まずプロジェクトへの Share Extension の追加は省略。 設定が終わると Safari などから Extension を呼び出す事ができる。 とりあえず名前は Test Share Ext…

Swift での NSLocalizedString

Objective-C では NSString *NSLocalizedString(NSString *key, NSString *comment) NSString *NSLocalizedStringFromTable(NSString *key, NSString *tableName, NSString *comment) NSString *NSLocalizedStringFromTableInBundle(NSString *key, NSString…

Swift での Class 取得メソッド

Objective-C で NSObject の Class を取得するには class (クラスメソッドとインスタンスメソッド) classForCorder (インスタンスメソッド) classForKeyedArchiver (インスタンスメソッド) classForKeyedUnarchiver (クラスメソッド) などのメソッドがある。…

Apple Watch の対応言語

Apple Watch 対応アプリをいざ App Store に申請しようとスクリーンショットを準備していて気付いた。 Apple Watch の対応言語は少ない? 日本語表記 母国語表記 日本語 日本語 英語 English フランス語 Français フランス語(カナダ) Français(Canada) ドイ…

Stickies の保存データを取り出す

以前使っていた Mac の Stickies にいろいろとメモが残っていたのでデータを取り出したい。 Mac 自体はHDDが壊れてしまって起動しないがユーザのホームのバックアップは取ってあるという状態なので、Stickies.app を起動して中身を以降する事ができない。 保…

Storyboard で UIViewController の dismiss を設定できるようにする

Storyboard で segue を設定して画面遷移を作っていく時、Modal 表示した ViewController にキャンセルボタンを設置する事がままある。 この時の ViewController への実装は - (IBAction)cancel:(id)sender { [self.presentingViewController dismissViewCon…

Xcode の Fonts & Colors その2

これの続き Xcode の Fonts & Colors - ObjecTips Xcode の Fonts & Colors の設定画面にプリインストールされているテーマファイルは plist形式の .xccolortheme ファイルで、以下の場所に内蔵されている。 /Applications/Xcode.app/Contents/OtherFramewor…

Xcode の Fonts & Colors

Xcode の Fonts & Colors の設定一覧を調べた 太字のところが色とフォントの設定が反映される箇所 Source Editor 適用箇所の例 Plain Text メソッド名、ファンクション名、クラス定義など- (void)method;void func();@interface MyObject : NSObject@impleme…

WatchKit Extension から親アプリを起動した時の挙動

WKInterfaceController の openParentApplication: メソッドから親アプリが起動された際にどのような処理の流れになるのか確認してみた。 確認方法は以下 親アプリとエクステンションの両方に NSLog を仕込む Xcode で WatchKit App をターゲットにしてrunす…

iOS 8での位置情報のプライバシーアクセス

iOS 7では CLLocationManager を用いて位置情報を利用する際に自動的にシステムのアラートが表示される。 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; [locationManager startUpdatingLocation]; self.locationManager = locat…

指紋認証APIの iOS 8.3 での変更点

iOS 8.2 から iOS 8.3 で Touch ID を使った指紋認証APIに微妙な変更があった。 フォールバックボタンの表示 まず iOS 8.2 で以下のコードを呼び出す LAContext *context = [[LAContext alloc] init]; [context evaluatePolicy:LAPolicyDeviceOwnerAuthentic…

WatchKit Development Tips まとめ

Apple Watch の発売に伴って WatchKit Development Tips が公開されてた 2015-04-24 時点のドキュメントまとめ(網羅ではなく適宜省略) WatchKit Development Tips and Best Practices - Apple Developer General Guidance Animate with image sequences. -…

WatchKit のドキュメントに書かれていない事

ドキュメントを読んだ後、実際にコードを書いてみて気付いた事がいくつかあった。 画面読み込み中のインジケーター 完全に静的な画面を表示するだけだとインジケーターは表示されない。 自前の InterfaceController クラスで IBOutlet で何かを接続するとそ…

NSViewController の viewWillAppear メソッド

OS X v10.10 の NSViewController に iOS の UIViewController と同じような以下のメソッドが追加された。 - (void)viewWillAppear NS_AVAILABLE_MAC(10_10); - (void)viewDidAppear NS_AVAILABLE_MAC(10_10); - (void)viewWillDisappear NS_AVAILABLE_MAC(1…

Auto Layout の Multiplier の指定方法いろいろ

Auto Layout で Multiplier を指定する時に多いのが View のアスペクト比を指定するケースだと思う。 InterfaceBuilder上で View を選択して、以下から Aspect Ratio の Constraint を追加する。 追加したらその Constraint を選択して、インスペクタで 4:3 …

NSPredicate で UTI を扱う

NSPredicate の predicateWithFormat: のフォーマット内で UTI-CONFORMS-TO という評価式が使える。 これは UTTypeConformsTo() ファンクションと同じロジックで UTI を判定に用いる事ができて、例えばファイル情報のリストに対して UTI-CONFORMS-TO で kUTT…

iOS 8.0, OS X v10.10 で追加された UTI

なぜか今になって割と追加されてた。 extern const CFStringRef kUTTypeURLBookmarkData __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); extern const CFStringRef kUTTypeDelimitedText __OSX_AVAILABLE_STARTING(__MAC_10_10,__IPHONE_8_0); extern…

NSPredicate で正規表現

NSPredicate と正規表現の組み合わせはちょっとややこしい。 例えば、正規表現で数字列を検出する場合 \d+ を用いる。 NSString でこの文字列を扱う場合 \ がエスケープ文字なので、これをこのまま NSString に入れると Unknown escape sequence '\d' という…

NSPredicate でワイルドカード

predicateWithFormat: でワイルドカードを使う事ができる。 1つ目はの a*e は先頭の文字が a で間に何文字か挟んで(0文字でもOK)末尾の文字が e の文字列が条件に合致する。 2つ目の a??le は先頭の文字が a で間に2文字挟んで末尾の文字が le の文字列が…

Xcode の不可視文字 (Invisible Characters)

Xcode に限らず、エディタで空白の whitespace を表示するオプションがある。 Xcode の場合、メニューの Editor > Show Invisibles から設定可能。 この時表示されるこれ ␣ をUnicode表で調べたみたところ OPEN BOX Unicode U+2423 UTF-8 E2 90 A3 というや…

GitHub Flavored Markdown でURLの自動リンクをしないようにする

GitHubやはてなブログで Markdown 内にURLを記述すると自動でリンクを張ってくれる。 http://www.example.com と書くと http://www.example.com とリンクが張られる。 ` で囲ってコードブロックにするのも1つの手だけど、セミコロンを特殊文字に変更して htt…

Markdown のテーブルにXMLを書く

Markdown のテーブルの基本表記はこれ |Column|Column| ||| |Row1|Row1| |Row2|Row2| コードブロック ` と ``` = <code> と <pre> タグを使うと枠線が表示されてしまうのでコードブロックを使わずにテーブルにXMLを入れてみる 入れるXMLはこれ <tag1> <tag2> </tag2> </tag1> とりあえず改行を削</pre></code>…

Markdown のテーブルで改行する

Markdown のテーブルの基本表記は以下 |Column|Column| ||| |Row1|Row1| |Row2|Row2| Column Column Row1 Row1 Row2 Row2 通常 Markdown では space 2 つで改行だけどテーブル内では改行が効かない。 HTMLの <br> タグを使うとテーブル内で改行させる事ができる…