ObjecTips

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

2015-01-01から1年間の記事一覧

UITableViewCell を左スワイプしてボタンを表示するUI

UITableViewCell を左スワイプした時に表示されるボタンは iOS 7 までは削除ボタンのみに固定されていた。 削除ボタンのタイトルはデリゲートメソッド - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath…

テスト時のログを見やすくする

前回 XCTest の name プロパティを使ってテスト時のログを見やすくする方法について書いた。 XCTest の name プロパティの活用 - ObjecTips その時は XCTest の name プロパティがあるのを知って「これを使えばログを見やすくできるんじゃないか?」という思…

XCTest の name プロパティの活用

XCText.framework でテストを書く時テストケースのクラス階層は MyTests: XCTestCase : XCTest となっていて XCTest には name というプロパティがある。 このプロパティで、今どのクラスのどのテストケース(テストメソッド)が実行されているかを知る事が…

Inter-device Audio Mode

Keynote その他で全然触れられてなかった Inter-device Audio Mode (IDAM) というおもしろい機能が WWDC2015 Session 507 What's New in Core Audio で紹介されていた。 https://developer.apple.com/videos/wwdc/2015/?id=507 この機能は iOSデバイスをUSB…

WebView の UserAgent を取得設定する iOS 9対応

UserAgent の取得 UIWebView では stringByEvaluatingJavaScriptFromString: メソッドで JavaScript を実行して UserAgent を取得できる。 iOS 8以降の WKWebView では evaluateJavaScript:completionHandler: メソッドで JavaScript を実行して UserAgent …

iOS 8.3 to iOS 9.0 API Differences ネットワークとWeb周り

結構 diffs の量が多いので分割分割で今回はネットワークとWeb周りについて。 関連記事は以下 iOS 8.3 to iOS 9.0 API Differences Core Image - ObjecTips iOS 8.3 to iOS 9.0 API Differences オーディオ周り - ObjecTips iOS 8.3 to iOS 9.0 API Differen…

iOS 8.3 to iOS 9.0 API Differences オーディオ周り

オーディオ周りの変更点のまとめ。いい感じに進化していってる。 関連記事は以下 iOS 8.3 to iOS 9.0 API Differences Core Image - ObjecTips iOS 8.3 to iOS 9.0 API Differences オーディオ周り - ObjecTips iOS 8.3 to iOS 9.0 API Differences ネットワ…

iOS 8.3 to iOS 9.0 API Differences Core Image

画像周りの変更点をまとめようと思ったら Core Image だけで済んでしまったので Core Image だけ。 関連記事は以下 iOS 8.3 to iOS 9.0 API Differences Core Image - ObjecTips iOS 8.3 to iOS 9.0 API Differences オーディオ周り - ObjecTips iOS 8.3 to …

デフォルトの EKSource について その2

前回の記事で、デフォルトでは2つの EKSource が存在する事について書いた。 デフォルトの EKSource について - ObjecTips iCloud のアカウントを設定するとさらに EKSourceTypeCalDAV EKSourceTypeSubscribed の2つのソースが追加される。 一覧は以下 title…

EKStructuredLocation の Private なプロパティ

EKStructuredLocation の公開ヘッダでは @property(nonatomic, retain) NSString *title; @property(nonatomic, retain) CLLocation *geoLocation; @property(nonatomic) double radius; // 0 = use default, unit is meters の3つのプロパティが定義されて…

Framework名とクラスヘッダファイル名のイレギュラー

XCTest.framework において XCTest クラスを定義しているヘッダファイルはちょっとイレギュラーな形になっている。 通常 XXAbc というクラス名であれば XXAbc.h というヘッダファイルで定義されるが XCTest の場合は XCAbstractTest.h というヘッダファイル…

リマインダーの優先順位 その2

少し前にリマインダーの priority プロパティについて書いた。 リマインダーの優先順位 - ObjecTips その後いろいろと調べていて OS X の方の EventKit/EKTypes.h を見ていたら以下のように priority の定数がしっかりと定義されていた。 typedef enum : NSU…

ウェブブラウザでの位置情報に基づくアプリのURL

たまたまウェブサーフィンをしていたら iTunes でのアプリの URL が従来のものから変わっているものを発見した。 例えば Apple のリリースしている iBooks の場合以下のようになる。 USページ https://itunes.apple.com/us/app/ibooks/id364709193?mt=8 JPペ…

アプリ全体を Dynamic Type に対応させる

アプリを Dynamic Type に対応させようと思って実装してみた。 IBでフォント指定可能なUI まずIB上で設置できるUIをいくつか配置する。 UILabel UIButton UITextField UITextView はIB上でフォントの設定ができるので Dynamic Type に対応したフォントを設定…

デフォルトの EKSource について

EKSource 上記コードでカレンダーへのプライバシーアクセスとリマインダーへのプライバシーアクセスを表示して全ての EKSource の配列を取得できる。 このソースは iCloud や CalDav を設定する事で増減するが、デフォルトでは2つのソースが用意されている。…

位置情報に基づくリマインダーの通知が利用できないデバイス

参考 iPhone および iPad でリマインダーを作成および使用する - Apple サポート 当然と言えば当然かも知れないけど、iPod touch と iPad Wi-Fi モデルでは利用できない。 リマインダー.appでのリマインダー詳細画面では「指定場所で通知」の項目自体が非表…

リマインダーの優先順位

EKReminder の priority プロパティ @property(nonatomic) NSInteger priority; なぜか現時点でまだドキュメントに記載が無いが、ヘッダファイルには定義が載っている。 ヘッダファイルのコメントによれば priority の値は最高が1、最小が9になっていてRFC 5…

Fabric Crashlytics のアップデート

利用可能なSDKのアップデートがあるとメニューバーのアイコンで教えてくれる。 メニューバーアイコンから Fabric を開くと Update ボタンが表示されている。 アップデートを実行するとプロジェクトをビルドするよう促される。 プロジェクトをビルドすると Fa…

UIDeviceFamily 一覧

ビルドしたアプリの Info.plist 内に設定されている UIDeviceFamily キーは開発者が明示的に設定するものでは無く、ビルド時に Xcode によって自動で設定される。 公式にドキュメントに載っているのは以下 値 デバイス 1 iPhone, iPod touch 2 iPad iPhone, …

Share Extension の NavigationItem をカスタマイズする

Share Extension のテンプレートで作成される SLComposeServiceViewController のサブクラスを自前のコントローラクラスとして、コード内では self として説明する。 Share Extension のデフォルトの表示が以下 self.title = @"Title"; これで NavigationBar…

AppleScript でウィンドウを閉じる

アプリケーションを指定して windows で全てのウィンドウを閉じる。 ウィンドウ指定で閉じる場合は window index の形式でウィンドウを指定。 index 1で最前のウィンドウを指定、index 2 で最前から1つ後ろのウィンドウを指定して閉じる。

AppleScript でアプリケーションを起動・終了する

AppleScript でのアプリケーションの基本操作 アプリケーションの起動には run と activate の2種類があって run は単にアプリケーションを起動するだけ。 activate はアプリケーションを起動してアクティブにする。Dock クリックでのアプリケーション起動と…

StoreKit の iOS 8.3 での変更点

iOS 8.3 で StoreKit に若干の変更があった。いずれも役に立つ変更。 ファミリー共有の Ask to Buy のテストが可能に SKPayment @property(nonatomic, readonly) BOOL simulatesAskToBuyInSandbox NS_AVAILABLE_IOS(8_3); SKMutablePayment @property(nonato…

Apple Remote Desktop でコマンドでログイン

Apple Remote Desktop で Unix コマンドを送信 の機能を使って複数台マシンを一気にログインさせる方法。 まず システム環境設定>ユーザとグループ>ログインオプション で ログイン時の表示をユーザのリストから名前とパスワードに変更。 これでログイン画面…

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…