ObjecTips

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

Objective-C

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) {…

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 でテキスト検出 TextDetection - 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…

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

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

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

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

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

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

自作の 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 …

watchOS 1からwatchOS 2への置き換え例

watchOSとiOSでデータのやり取りをしている場合のwatchOS 1からwatchOS 2への置き換え例 watchOS watchOS 1 [WKInterfaceController openParentApplication:userInfo reply:^(NSDictionary *replyInfo, NSError *error) { if (error) { } else { } }]; watch…

中国語のローカライズ表記

iOS の言語設定の言語一覧画面と同じような画面を作ろうと思って実装してみたら中国語の場合に思い通りにいかなかったメモ iOS の言語設定の言語一覧画面 cell.textLabel.title には現地語でのローカライズ表記 cell.detailTextLabel.title にはシステム言語…

genstrings で Localizable.strings を生成する

genstrings は C や Objective-C のソースコードファイルから .strings ファイルを生成するユーティリティで、以下のマクロと関数を Localizable.strings に書き出してくれる。 NSLocalizedString("key", comment); CFCopyLocalizedString("key", comment); …

Localizable.strings ファイルを Cocoa で読み書きする

ローカライズに用いる Localizable.strings ファイルは NSDictionary で簡単に読み書きができる。 例えば以下のような Localizable.strings があった時 /* Localizable.strings Test */ "Yes" = "はい"; "No" = "いいえ"; "Cancel" = "キャンセル"; "Title" …

SSReadingList で出来る事

リーディングリスト周りのAPIを使って何が出来るのか調査。 Framework は SafariServices.framework でリーディングリスト周りのクラスは SSReadingList のみ。 API は以下 イニシャライザ + (nullable SSReadingList *)defaultReadingList; - (instancetype…

UITextView で「リッチテキストとしてペースト」pasteAsRichText を実装する その2

前回 前回の結果を踏まえて copy: メソッドもオーバーライドして挙動をカスタマイズする事にする。 簡単なのは copy: メソッドの super の挙動を呼び出してペーストボードの中身を作ってから自前で追加したいものを加える方法。 実装 - (void)copy:(id)sende…

UITextView で「リッチテキストとしてペースト」pasteAsRichText を実装する

OS Xでの挙動 OS Xの NSTextView には - (void)paste:(id)sender; - (void)pasteAsPlainText:(id)sender; - (void)pasteAsRichText:(id)sender; これらのメソッドがあって、システムのペーストの挙動をそのまま使う事もできるしプレーンテキストやリッチテキ…

AppleScript の JavaScript for Automation で plist ファイルを作成する

上記の記事ではJSONファイルの書き出し保存を行った。 iOS でデータを扱う際には JSON より plist の方が読み込みが簡単なので plist 形式でのファイル保存もさらっておく。 plist の書き出しは NSArray or NSDictionary を writeToFile:atomically: で書き…

NSString が数字のみで構成されているかを判定する その2

以前 NSCharacterSet の decimalDigitCharacterSet メソッドを使って文字列が数字のみを含んでいるかを調べるコードを書いた。 ここに少しコードを追加して文字列がローカライズとフォーマットされた数字表記のみを含んでいるかどうかを調べるコードにする。…

コピー可能な UILabel

編集不可な文字列を UILabel で表示させつつユーザにコピー操作だけはさせたいという事があったので実装を試みてみた。 コピーの方法は UITextView や UITextField でコピー操作を行う時と同様にポップアップのメニューを表示するようにする。 メニューは UI…

OSType, FourCharCode から NSString への変換

いろいろデバッグしていて OSType や FourCharCode を扱う事があるので備忘。 OS Xだと Foundation.framework に NSFileTypeForHFSTypeCode という便利な関数が用意されている。 この関数はシングルクォーテーションで囲われた文字列を生成する。 OSType typ…

ナビゲーションバーを透明にする transparent UINavigationBar

サンプルとして UINavigationController の rootViewController に UITableViewController を設定したものを使う。 UINavigationItem に適当にボタンを設定して UITableView の tableViewHeader に UIImageView を aspectToFill で入れて画像を設定。 Storyb…

AppleScript の JavaScript for Automation で Excel から JSON ファイルを作成する

これまでの記事 AppleScript の JavaScript for Automation で Excel のセルの値を取得する - ObjecTips AppleScript の JavaScript for Automation でテキストをファイルに保存する - ObjecTips AppleScript の JavaScript for Automation でテキストをファ…

AppleScript の JavaScript for Automation でテキストをファイルに保存する Objective-C Bridge編

前回の記事 AppleScript の JavaScript for Automation でテキストをファイルに保存する - ObjecTips 前回は AppleScript の StandardAdditions を使ってテキストファイルの書き出し保存を行ったが、 まずどんな関数があるのか、そして関数の引数や実行時の…

AVAudioPlayer と AVPlayer の初期化時の注意点

AVAudioPlayer には NSURL で初期化を行う以下のメソッドがある。 - (instancetype)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError; AVPlayer にも NSURL で初期化を行う以下のメソッドがある。 + (id)playerWithURL:(NSURL *)URL; - (inst…