24/7 twenty-four seven

iOS/OS X application programing topics.

Objective-C

UIKeyCommandを使ってバーコードリーダーの入力を受け取る

TL;DR ●バーコードリーダーは外部キーボードとして扱える ●UITextFieldなどの入力コンポーネントを使って入力を受け取れる ●UITextFieldなどを使いたくない場合がある ●UIKeyCommandを使うと入力コンポーネントを使わずに入力を受け取れる ユビレジでは商品…

NSArrayやNSDictionaryからNSNullを効率よく取り除く

iOSアプリケーションでWeb APIから返ってきたJSONを処理するのにNSNullの扱いに困っていて、事前にNSNullを取り除いてしまうのが事故を防ぐための確実な方法なのですが、再帰的にすべての要素を検査する以外になにかいい方法がないかと思って考えていたらち…

NSDateFormatterのパフォーマンスの話 #potatotips

クックパッド主催の第4回potatotipsでiOSのtipsとして日付のフォーマットをするときのパフォーマンスの話をしました。 きっかけ きっかけは何気なくgistを眺めていたときに見つけたこれです。 ↓ Compare the date parsing performance of NSDateFormatter ag…

ユビレジのiPadアプリのCI環境をJenkinsからTravis CIに移行したときのまとめ

こちらの記事について、最新のTravis CIの環境(2014/4/15)ではコード署名に失敗する問題があります。 その問題の修正については下記の記事にまとめました。 Travis CIでipaを作るときのCode Signが失敗するのを修正したメモ - 24/7 twenty-four seven 実際は…

Conference with DevelopersでJavaScriptCore.frameworkとObjective-C Runtime APIについて話しました

年に1度のiOSデベロッパーのイベント「Conference with Developers」で話をしました。 JavaScriptCore.frameworkとObjective-C のRuntime APIという非常にマニアックな内容でしたが、まあまあわかるように伝えられたかなと思います。 話の内容は主に以下の3…

JavaScriptでiOSアプリが書けるライブラリJavaScriptBridgeを公開しました

kishikawakatsumi/JavaScriptBridge · GitHub 前にiOS 7から導入されたJavaScriptCore.frameworkを使ってUIKit標準のクラスを操作する話を書きました。JavaScriptだけでiOSのUIを書いてみる - 24/7 twenty-four seven JavaScriptCoreを使ってJavaScriptからO…

JavaScriptだけでiOSのUIを書いてみる

この投稿は iOS Advent Calendar 2013 - Qiita の22日目の記事です。iOS 7から新しく追加されたJavaScriptCore.frameworkを使ってJavaScriptだけでUIを書いてみましょう。 JavaScriptCore.frameworkの基本 (Objective-C -> JavaScript) まずJavaScriptCore.f…

iOSアプリケーションでキーボードショートカットに対応する

↓ より丁寧な記事はこちらで公開しています。 iOSアプリで外部キーボードからのショートカットに対応する方法 - iOSアプリ開発こぼれ話 iOS 7のSafariやメールでは外部キーボードを使用した際に利用できるできるショートカットが以前より充実したことが話題…

iOS 7のエンタープライズ向け新機能 Guided Access(アクセスガイド)のカスタマイズ

より詳しい記事はこちら ↓ iOS 7はアクセスガイド(Guided Access)が便利にカスタマイズできるって知ってました?(1/2) - iOS 7 徹底解剖 - Mobile Touch - モバイル/タブレット開発者およびデザイナー向け情報ポータル アクセスガイドとは iOS 6から導入…

UUIDを少し短くするUUIDShortener

kishikawakatsumi/UUIDShortener · GitHub ちょっと仕事でUUIDっぽい文字列を限られた幅の場所に表示する必要があったので書きました。具体的にはレシートに識別子を印字したいという要件で、識別子はUUIDを振っているのでそれでいいのですが、レシートに印…

追加ダウンロードフォントを含むiOS 7で使えるフォント一覧

参考 iOS 7 で使えるフォント名一覧 - Over&Out その後 出力の方法 iOS 7からは`kCTFontDownloadableAttribute`という属性が追加されているのでそれを利用します。 この方法で数えると、すべてのフォント数は283になりました。 iOS 7で新たに使えるようにな…

iOS 6 or 7で「游ゴシック体」や「ヒラギノ丸ゴシック」を使う

OS XではMarvericks (10.9) から「游ゴシック体」と「游明朝体」が標準搭載されたことで話題になりましたが、実はiOSでも6以上からこれらのフォントが使用できます。 iOS 6から追加ダウンロードフォントという仕組みが導入され、游ゴシック体などのフォント…

チュートリアルなどでUIPageControlを使うときは標準のアクションに対応するのを忘れずに

UIPageControlはiPhoneのホーム画面でも使われている、今何ページ目かを示すUIControlのサブクラスです。 最初のiOSからあって、特徴的なUIなのでフリックでページをめくる画面ではこれを使って現在のページを示すのが定番になっています。 特に最近では初回…

CoreTextを使って簡単に画像付きリッチテキストを表示できるSECoreTextViewに編集機能がつきました。

kishikawakatsumi/SECoreTextView · GitHub iOS/Macの両方で使えて、文字の選択やリンクのクリックに対応したテキストビューをテスト公開しました。 - 24/7 twenty-four seven 前に書いたSECoreTextViewに編集機能を実装しました (iOSのみ)。 SECoreTextView…

複雑な正規表現を分かりやすくするライブラリ VerbalExpressions の Objective-Cバージョンを書きました

https://github.com/VerbalExpressions/ObjectiveCVerbalExpressions ↑ 本家にマージされました。https://github.com/kishikawakatsumi/ObjectiveCVerbalExpressions 概要 VerbalExpressions はメソッドチェーンとわかりやすい名前を使って、正規表現を読み…

OS X 10.8.4でXcodeでiOS Simulatorを実行したときにSIGABRTでアプリがクラッシュすることがある問題の暫定的な対処(修正済み)

先日のアップデートでOS Xを10.8.4にしてから、XcodeからアプリケーションをiOS Simulatorで実行したときにSIGABRTでアプリが起動せずにクラッシュすることが多くなってしまいました。私の環境だとアプリを終了させてから再度実行、という手順だと数回に1回…

UITextView でタップ可能なリンクをカスタマイズする

UITextView では dataDetectorTypes を設定することでデータタイプに応じて自動的にクリック可能なリンクとして表示してくれます。例えば下記のようにしていすると、URLが含まれていた場合、タップ可能なリンクとして表示されます。 cell. tweetTextView. da…

第4回iphone_dev_jp 東京iPhone/Mac勉強会を開催しました

第4回 iphone_dev_jp 東京iPhone/Mac勉強会 : ATND しばらく休んでいたのですが久しぶりにいつもおなじみのVOYAGE GROUPさんの会場をお借りして開催いたしました。 今回は幸運なことにEvernote本社からMac版EvernoteのUIのリニューアルの指揮をされましたJa…

UIImageView で 'Aspect Fit (UIViewContentModeScaleAspectFit)' を指定したときの画像サイズを取得する

↓ 例えばこんなふうに UIImageView に 'Aspect Fit' を指定して表示させたときの領域を知りたいことってありますよね。 がんばって計算してもいいのですが、AVFoundation.framework の次の関数で簡単に取得できます。 CGRect AVMakeRectWithAspectRatioInsid…

iPhone/iPadで画像をクロッピングするライブラリを公開しました

kishikawakatsumi/PEPhotoCropEditor · GitHubPEPhotoCropEditor は iPhone/iPad アプリに画像をクロッピングする機能を簡単に追加します。 UIは標準のPhotos.appに似ていておもしろい動きをします。 インストール CocoaPodsでインストールできます。 pod 'P…

iOS/Macの両方で使えて、文字の選択やリンクのクリックに対応したテキストビューをテスト公開しました。

kishikawakatsumi/SECoreTextView · GitHub SECoreTextView はリッチテキストの表示と文字の選択(現在はOS Xのみ)やリンクがクリック可能だったりするテキストビューです。 別のアプリでテーブルビューのセルにリンクを含むテキストを表示するのに、既存の…

iPhone の画面操作を録画するライブラリを公開しました。

kishikawakatsumi/ScreenRecorder · GitHubScreenRecorder は iOS デバイスの画面を連続的にキャプチャして、動画に変換することで画面の操作を録画することができる機能をアプリケーションに追加します。 開発中のソフトウェアのユーザーテストなどに利用す…

リンクするだけで iOS 6 で Google Map が使えるようになる YAMapKit を公開しました。

kishikawakatsumi/YAMapKit · GitHubYAMapKit は MapKit.framework と(ほぼ)互換性のある代替ライブラリです。 Google Maps Javascript API と UIWebView を利用して iOS 6 で Apple の標準地図の代わりに Google Map を使った表示ができます。 MapKit.fra…

Objective-C でサブクラスのインスタンスから任意のスーパークラスのメソッドを呼ぶ

サブクラスのインスタンスからポリモーフィズムを無視して任意のスーパークラスのメソッドを呼びます。 ↓ 下のように Shape クラスと Shape クラスを継承した Path クラス、および Path クラス を継承した Circle があります。 それぞれのクラスで draw メソ…

iOS 6.0 と iOS 5.x の両方で動作するアプリケーションをビルドする設定

iOS 4.0 と iPhone OS 3.x の両方で動作するアプリケーションをビルドする設定 - 24/7 twenty-four seven↑ こちらも参考に iOS 4.0 が登場したくらいのときに上の記事を書いて、仕組みは変わってないのですけど Xcode 4.x 系だと UI が変わってるので現在の…

iOS 6 では Supported interface orientations の順番に注意!

最近の Xcode ではアプリケーションが対応しているデバイスの向きをターゲットの Summary 画面から GUI を用いて設定できるようになりましたが、ここから設定する場合はボタンを押す順番に注意する必要があります。というのも、この画面で設定した内容は、In…

iOS 6 ではグループスタイルのテーブルビューの背景色がこっそり非推奨になっている。

iOS 6 では上記のカラーを生成するメソッドがヘッダのコメントでひそかに deprecated になっています。UIInterface.h // Group style table view backgrounds can no longer be represented by a simple color. // If you want to have a background in your…

はやりのシンボルフォントを iOS で画像として扱える SymbolFontKit を公開しました。

kishikawakatsumi/SymbolFontKit · GitHub↑ シミュレータに表示されている画像やツールバーのボタン、タブバーのアイコンは全てフォントです。シンボルフォントとは要するにアイコン画像などをフォント形式にしたものです。 Webだと最近のブラウザだとWebフ…

Objective-C や Xcode の新しい機能のほとんどは iOS4 以前でも動く

Objective-C Feature Availability Index に一覧表が載ってるのですが、ARCのWeak Reference 以外は iOS 4 以上、ほとんどはすべての iOS バージョンで動くので、古い環境を気にせずにジャンジャン使ってしまってOKです。新しいリテラルや Subscripting は断…

はてなブックマークの ShareKit 拡張を書きました

ShareKit/Classes/ShareKit/Sharers/Services/Hatena at hatena · kishikawakatsumi/ShareKit · GitHub ShareKit といういろいろな外部サービスとの連携機能を提供するライブラリがあるのですが、それのプラグイン (ShareKit では Sharer と呼びます) として…