その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

Objective-C

【iOS7】フラットデザインUI実装に役立つライブラリのまとめ

iOS7で採用されたフラットデザインっぽいUIを、現行iOS(〜6.x)で実装する際に役立つOSSをまとめました。後半ではiOS7っぽく下のビューをブラーかけて半透過表示するライブラリや、パララックス表示するライブラリも紹介しています。 * English version of …

[iOS 7]Open source collection for Flat Design UI

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…

『iOSアプリ開発 達人のレシピ100』という本を書きました

2013年に入ってから4ヶ月間、無職のありあまる時間をつぎ込み執筆してきた本が、ついに本日発売となりました。 バルセロナで観光もせず執筆し、その後は鎌倉のコワーキングスペースに毛布を持ち込み半泊まり込みで執筆し、企画当初は230ページの予定だったと…

"dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic_copy" エラーの対処方法

他人が過去につくったプロジェクトをビルドしてシミュレータで動かしてみると、 dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic_copy なるエラーが出てクラッシュました。 クラッシュしたシミュレータの iOS バージョン…

SLComposeViewController の isAvailableForServiceType: がシミュレータでは必ず YES を返してくる件

下記のコード、実機ではFacebookアカウントを登録していないと NO を返してきますが、シミュレータでは必ず YES が返ってきます。 [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook] 地味な話ですが、このことを知らずに、「実機…

Social.framework を利用して Twitter の DM を送信する

Social.framework (と Accounts.framework)を利用して Twitter の DM を送信する手順です。 1. フレームワークをプロジェクトに追加 以下の2つを追加し、 Social.framework Accounts.framework DM送信を実装するクラスでヘッダをインポートしておきます。…

評判のいいiOSアプリ開発のTips ベスト20

『iOSアプリ開発に役立つTips』という Facebook ページをやっておりまして、そこで評判が良かった投稿(※)を 20 個ほど紹介します。 (※) Facebook ページの insights にある「クチコミ度」で判断しました アプリ実行中にコードを修正してそのまま実行中の…

UIKit で物理演算エンジンを使用する

cocos2d や Unity などのゲームエンジンや openFrameworks では、標準で物理演算エンジンがサポートされていて手軽に扱えますが、ビューを作成したり画像を表示したりといった基本的な部分の実装方法や、ものによっては使用言語も違うため、「物理演算エンジ…

パスに沿ってアニメーションさせる

Core Animationを用いると、UIViewのアニメーションと比較してより自由度の高いアニメーションを実現できます。たとえば、CAKeyframeAnimation に Core Graphics で描画したパスを渡すことで、円に沿ってアニメーションさせたり、放物線状にアニメーションさ…

Twitterの全ツイートアーカイブを閲覧するiOSアプリを公開しました

今日付けで、日本ユーザーもTwitterの過去の全ツイートをダウンロードできるようになったようです。 Twitter、「全ツイート履歴」をダウンロードできる機能、日本でも提供開始 で、けっこう自分の過去のツイートを見るのが楽しくて、専用ビューアアプリでち…

UILabel, UITextView, UITextFieldのテキストを NSAttributedString で装飾する

iOS6から、UILabel, UITextView, UITextFieldに、 attributedText というNSAttributedString型のプロパティが追加されました。NSAttributedStringは文字列の属性を管理するクラスで、これを使用するとフォントや文字色、背景色、カーニング等の属性をテキス…

UILabelでのテキスト表示をリッチにする

UILabelはiOSアプリ開発において使用頻度の高いUIコンポーネントですが、カユいところに手が届かなかったりします。例えばテキストの一部だけ強調表示したい、色を変えたい、フォントを変えたいといったHTMLのような使い方ができません。 iOS6以上であれば、…

自然言語のテキストを属性で区分する

NSLinguisticTaggerを用いると、自然言語のテキストを品詞(名詞、動詞、代名詞)や「個人名」「地名」といった属性で区分(トークンに分解)することができます。日本語の形態素解析も可能です。 使い方は非常にシンプルで、基本的な手順は1. スキームを引…

UIKit上でパーティクルエフェクトを表示する

iOS5より、Core Animationでパーティクルシステムがサポートされ、UIKitで実装されたUI上でパーティクル表現を簡単に行えるようになりました。 ここでは CAEmitterLayer と CAEmmiterCell を用いたパーティクルエフェクトの基本的な実装方法を説明し、入れ子…

Core Image の遷移エフェクトを使う

Core Image のフィルタ (CIFilter) には、CICategoryTransition というカテゴリーがあり、次のような遷移(トランジション)エフェクトが用意されています。 (2015.10.5更新) CIBarsSwipeTransition CICopyMachineTransition CIDisintegrateWithMaskTransi…

Audio Unitのコールバック関数を登録する方法3種の比較

Audio Unit で、コールバック関数を登録するための方法が何通りかあって、何だかややこしかったので整理してみました。 AudioUnitSetProperty まず一番基本的なものである AudioUnitSetProperty から。 AURenderCallbackStruct callbackStruct; callbackStru…

ダウンロード可能な Audio Unit 関連のサンプルコード11個

Audio Unit は、iOS の Core Audio においてもっとも低レベル(ハードウェアより)に位置するフレームワークです。そのため低レイテンシを要求されるオーディオ処理機能を提供するアプリに向いています。 というのがよく言われる Audio Unit のメリットなの…

『フラグメントシェーダー事始め』で勉強したメモ

OpenCVで実装した画像処理アルゴリズムを、OpenGL ESのフラグメントシェーダに移植しようとしていて、GPUImageに入っているフィルタのシェーダプログラムを参考として読み始めたものの、そもそもこのシェーダというものがよくわかってないので、下記の記事を…

1行で iOS バージョン判定できる便利マクロ

下記のようにマクロを定義しておけば、 #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] \ compare:v options:NSNumericSearch] == NSOrderedAscending) こんな感じで1行でバージョン判定できて便利です。 if (SYSTEM_VERS…

Core Image の全エフェクトを試せるサンプルコードを公開しました

Core Image のフィルタ(画像にエフェクトをかけたり、色を調整したりするもの)を一通り試せるサンプルプロジェクトをgithubに上げました。 というか、これ、1年以上前にアップしてこちらの記事に書いたのですが、ほとんど認知されることがなかったので、改…

Method Swizzling をうまく使っている実用例

Method Swizzlingは、既存のメソッドの実装を、自前の実装に差し替えるための手法です。 ・・・ということを知ってはいても、どういうときに使うと便利なのかイマイチわかってなかったので、Method Swizzlingをうまく使った実用例を2つほど探してきました。 …

AVFoundation 使用時のカメラ起動を高速化する

AVFoundation を用いて静止画とか動画とかを撮影する場合に、カメラの起動時間を速くする方法です。 計測してみると、どうも AVCaptureSession の startRunning に一番時間がかかってるので、 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_…

シャッター音の鳴らないカメラアプリの実装方法

「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とか、カメラ機能をもっと自由にカスタマイズしたい場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使う…

たったの6ステップ!『漫画カメラ』風に写真を加工するiPhoneアプリの作り方

超大ヒットした『漫画カメラ』、ほんとに漫画っぽくなって、動作も軽快、シェアも簡単で楽しいですよね。 ただ、ちらほらと「同じこと考えてた」「そういうの作ってた」という声を聞くことがあります。実際に同様のコンセプトのアプリもたくさん出ています。…

たった1行でWebサービスと連携!UIActivity のまとめリポジトリをつくりました

UIActivityとは? 地味だからかあまり話題になってない気がするのですが、iOS 6 の便利な新機能の1つに UIActivity というのがあります。これは、 こんな感じでメールとか写真アプリとかFacebook/Twitterとかに写真やテキストを渡すためのUIです。(超ざっく…

iOS のオーディオ/サウンド処理について学べる書籍10冊+α

Core Image や vImage や OpenCV、それらをラップする各種ライブラリの充実のおかげで、画像処理まわりは高度な処理をずいぶん簡単に高速に実装できるようになってきましたが、オーディオ処理(音声処理)まわりはいまだに再生や録音などの基本的なところか…

CALayer を用いた「影」の描画処理を軽くする

CALayerを用いてUIViewを継承したクラスに影をつける方法は、下記のような感じで(CoreGraphicsで描画する方法などと比べて)わかりやすくお手軽で、質感もグッと増すので、ついつい多用したくなります。 self.layer.shadowOpacity = 0.5; self.layer.shadow…

DropBox 連携 UIActivity、"GSDropboxActivity" の使い方

DropBox用カスタムUIActivity、"GSDropboxActivity" の導入方法(のメモ)です。 GSDropboxActivity UIActivityとは何ぞや?という方はこちらの記事 からどうぞ。 準備 GSDropboxActivity フォルダをプロジェクトに追加 DropboxSDK.framework をプロジェクト…

英単語の単数形/複数形変換をメソッド1つで行えるようにする NSString のカテゴリ

iOS アプリを英語ローカライズする際,単数形/複数形の取り扱いはなかなかやっかいです。-s, -es の違いを始めとして,不可算名詞,person/peopleのようにイレギュラーなものもあります。 それら諸々のルールをプロパティリストファイルに記述し, - (NSStr…

ARC を有効にしているコードで NSZoneMalloc をどう置き換えればよいか

AVFoundation を用いたカメラアプリを実装していて、参考にしていたサンプルコードに次のような NSZoneMalloc を用いてメモリ確保している箇所がありました。 bitmap = NSZoneMalloc(self.zone, width * height * 4); これを ARC オンにしているソースに書い…