Objective-C
iOS7で採用されたフラットデザインっぽいUIを、現行iOS(〜6.x)で実装する際に役立つOSSをまとめました。後半ではiOS7っぽく下のビューをブラーかけて半透過表示するライブラリや、パララックス表示するライブラリも紹介しています。 * English version of …
This is a collection of OSS which helps you implement Flat Design UI on your current version of iOS (iOS5,6) just like that on iOS 7. FlatUIKit A collection of flat UI components. UI7Kit Backport flat-style UIKit from iOS7 to iOS5+. iPhone…
2013年に入ってから4ヶ月間、無職のありあまる時間をつぎ込み執筆してきた本が、ついに本日発売となりました。 バルセロナで観光もせず執筆し、その後は鎌倉のコワーキングスペースに毛布を持ち込み半泊まり込みで執筆し、企画当初は230ページの予定だったと…
他人が過去につくったプロジェクトをビルドしてシミュレータで動かしてみると、 dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic_copy なるエラーが出てクラッシュました。 クラッシュしたシミュレータの iOS バージョン…
下記のコード、実機ではFacebookアカウントを登録していないと NO を返してきますが、シミュレータでは必ず YES が返ってきます。 [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook] 地味な話ですが、このことを知らずに、「実機…
Social.framework (と Accounts.framework)を利用して Twitter の DM を送信する手順です。 1. フレームワークをプロジェクトに追加 以下の2つを追加し、 Social.framework Accounts.framework DM送信を実装するクラスでヘッダをインポートしておきます。…
『iOSアプリ開発に役立つTips』という Facebook ページをやっておりまして、そこで評判が良かった投稿(※)を 20 個ほど紹介します。 (※) Facebook ページの insights にある「クチコミ度」で判断しました アプリ実行中にコードを修正してそのまま実行中の…
cocos2d や Unity などのゲームエンジンや openFrameworks では、標準で物理演算エンジンがサポートされていて手軽に扱えますが、ビューを作成したり画像を表示したりといった基本的な部分の実装方法や、ものによっては使用言語も違うため、「物理演算エンジ…
Core Animationを用いると、UIViewのアニメーションと比較してより自由度の高いアニメーションを実現できます。たとえば、CAKeyframeAnimation に Core Graphics で描画したパスを渡すことで、円に沿ってアニメーションさせたり、放物線状にアニメーションさ…
今日付けで、日本ユーザーもTwitterの過去の全ツイートをダウンロードできるようになったようです。 Twitter、「全ツイート履歴」をダウンロードできる機能、日本でも提供開始 で、けっこう自分の過去のツイートを見るのが楽しくて、専用ビューアアプリでち…
iOS6から、UILabel, UITextView, UITextFieldに、 attributedText というNSAttributedString型のプロパティが追加されました。NSAttributedStringは文字列の属性を管理するクラスで、これを使用するとフォントや文字色、背景色、カーニング等の属性をテキス…
UILabelはiOSアプリ開発において使用頻度の高いUIコンポーネントですが、カユいところに手が届かなかったりします。例えばテキストの一部だけ強調表示したい、色を変えたい、フォントを変えたいといったHTMLのような使い方ができません。 iOS6以上であれば、…
NSLinguisticTaggerを用いると、自然言語のテキストを品詞(名詞、動詞、代名詞)や「個人名」「地名」といった属性で区分(トークンに分解)することができます。日本語の形態素解析も可能です。 使い方は非常にシンプルで、基本的な手順は1. スキームを引…
iOS5より、Core Animationでパーティクルシステムがサポートされ、UIKitで実装されたUI上でパーティクル表現を簡単に行えるようになりました。 ここでは CAEmitterLayer と CAEmmiterCell を用いたパーティクルエフェクトの基本的な実装方法を説明し、入れ子…
Core Image のフィルタ (CIFilter) には、CICategoryTransition というカテゴリーがあり、次のような遷移(トランジション)エフェクトが用意されています。 (2015.10.5更新) CIBarsSwipeTransition CICopyMachineTransition CIDisintegrateWithMaskTransi…
Audio Unit で、コールバック関数を登録するための方法が何通りかあって、何だかややこしかったので整理してみました。 AudioUnitSetProperty まず一番基本的なものである AudioUnitSetProperty から。 AURenderCallbackStruct callbackStruct; callbackStru…
Audio Unit は、iOS の Core Audio においてもっとも低レベル(ハードウェアより)に位置するフレームワークです。そのため低レイテンシを要求されるオーディオ処理機能を提供するアプリに向いています。 というのがよく言われる Audio Unit のメリットなの…
OpenCVで実装した画像処理アルゴリズムを、OpenGL ESのフラグメントシェーダに移植しようとしていて、GPUImageに入っているフィルタのシェーダプログラムを参考として読み始めたものの、そもそもこのシェーダというものがよくわかってないので、下記の記事を…
下記のようにマクロを定義しておけば、 #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] \ compare:v options:NSNumericSearch] == NSOrderedAscending) こんな感じで1行でバージョン判定できて便利です。 if (SYSTEM_VERS…
Core Image のフィルタ(画像にエフェクトをかけたり、色を調整したりするもの)を一通り試せるサンプルプロジェクトをgithubに上げました。 というか、これ、1年以上前にアップしてこちらの記事に書いたのですが、ほとんど認知されることがなかったので、改…
Method Swizzlingは、既存のメソッドの実装を、自前の実装に差し替えるための手法です。 ・・・ということを知ってはいても、どういうときに使うと便利なのかイマイチわかってなかったので、Method Swizzlingをうまく使った実用例を2つほど探してきました。 …
AVFoundation を用いて静止画とか動画とかを撮影する場合に、カメラの起動時間を速くする方法です。 計測してみると、どうも AVCaptureSession の startRunning に一番時間がかかってるので、 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_…
「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とか、カメラ機能をもっと自由にカスタマイズしたい場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使う…
超大ヒットした『漫画カメラ』、ほんとに漫画っぽくなって、動作も軽快、シェアも簡単で楽しいですよね。 ただ、ちらほらと「同じこと考えてた」「そういうの作ってた」という声を聞くことがあります。実際に同様のコンセプトのアプリもたくさん出ています。…
UIActivityとは? 地味だからかあまり話題になってない気がするのですが、iOS 6 の便利な新機能の1つに UIActivity というのがあります。これは、 こんな感じでメールとか写真アプリとかFacebook/Twitterとかに写真やテキストを渡すためのUIです。(超ざっく…
Core Image や vImage や OpenCV、それらをラップする各種ライブラリの充実のおかげで、画像処理まわりは高度な処理をずいぶん簡単に高速に実装できるようになってきましたが、オーディオ処理(音声処理)まわりはいまだに再生や録音などの基本的なところか…
CALayerを用いてUIViewを継承したクラスに影をつける方法は、下記のような感じで(CoreGraphicsで描画する方法などと比べて)わかりやすくお手軽で、質感もグッと増すので、ついつい多用したくなります。 self.layer.shadowOpacity = 0.5; self.layer.shadow…
DropBox用カスタムUIActivity、"GSDropboxActivity" の導入方法(のメモ)です。 GSDropboxActivity UIActivityとは何ぞや?という方はこちらの記事 からどうぞ。 準備 GSDropboxActivity フォルダをプロジェクトに追加 DropboxSDK.framework をプロジェクト…
iOS アプリを英語ローカライズする際,単数形/複数形の取り扱いはなかなかやっかいです。-s, -es の違いを始めとして,不可算名詞,person/peopleのようにイレギュラーなものもあります。 それら諸々のルールをプロパティリストファイルに記述し, - (NSStr…
AVFoundation を用いたカメラアプリを実装していて、参考にしていたサンプルコードに次のような NSZoneMalloc を用いてメモリ確保している箇所がありました。 bitmap = NSZoneMalloc(self.zone, width * height * 4); これを ARC オンにしているソースに書い…