サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
runlooprun.wordpress.com
2012年7月12日から、GitHub にて REKit (リキット) というプロジェクトを進めていましたが、公開できるレベルになったと思うので、ここで紹介します。 * 2013.02.12 時点での情報になります。最新情報は、REKit on GitHub や日本語 README を参照してください。 REKit は、iOS, OS X の開発で使える NSObject の拡張コレクションです。現時点では Blocks の潜在能力を引き出すような 2つ の機能を提供しています: REResponder: Block を使ったインスタンスの動的メソッド実装/上書き機能 REObserver: Block を使って KVO (Key-Value Observing) を実現する機能 + α 本命は REResponder です。REResponder は、インスタンス (クラスではなくインス
UIKit では、Mac 用フレームワーク AppKit にはなかった構造体、UIEdgeInsets が登場しました。いろいろな場面で便利に使える構造体で、実際に UIKit の中でもよく使われています。 今回は、UIEdgeInsets を紹介します。 UIEdgeInsets は、マージンを表す構造体です。上下左右のマージンを表す4つのフィールドを持っています。 typedef struct UIEdgeInsets { CGFloat top, left, bottom, right; } UIEdgeInsets; 下図のピンクのビューは w100 × h100 のビューですが、top: 10, left: 20, bottom: 30, right: 40 の UIEdgeInsets を適用した矩形は、その中の半透明なグレーのビューが表す矩形になります。 UIEdgeInse
UINavigationBar の背景を画像にするでは、UINavigationBar の背景を画像にする方法を紹介しました。基本的には UIImageView を UINavigationBar に insertSubview: atIndex: すればよかったのですが、ひと工夫が必要でした。 では、UIToolbar の背景を画像にする方法はどうでしょうか。 今回は、UIToolbar の背景を画像にする方法を紹介します。 UIToolbar の背景を画像にするには、UIImageView を UIToolbar に insertSubview: atIndex: すればそれで OK です。UINavigationBar の場合、ビューコントローラをプッシュしたりポップする過程でタイトルやバーボタンアイテムが UIImageView の後ろに潜り込んでしまう問題がありましたが、UITo
“インスタンス毎の動的メソッド実装/上書き機能を備えた REKit” が、CocoaPods を使って簡単にインストールできるようになりました。 今回、REKit を CocoaPods でインストールできるようにしたのは、@dictav さんに提案いただいたから。@dictav さんのお陰で、REKit を簡単にインストールできるようになりました。@dictav さん、ありがとうございます! この記事では、CocoaPods を使って REKit をインストール (Xcode プロジェクトに追加) する方法を紹介します。 REKit についてのリアルタイムな情報は @zuccoi でつぶやく予定です。 Read more… 2012年7月12日から、GitHub にて REKit (リキット) というプロジェクトを進めていましたが、公開できるレベルになったと思うので、ここで紹介します。
“UITextView:キーボード絡みの挙動・問題点”では、いろいろなタイミングで UITextView の contentInset.bottom が強制的に変わってしまうことを説明しました。 “UITextView をキーボードと連携させる”では、UITextView のもともとの contentInset.bottom が 0 であれば、UITextView をキーボードと連携させることができることを説明しました。 今回は、UITextView のもともとの contentInset.bottom が 0 ではない場合、UITextView をどうやってキーボードと連携させるのかを紹介します。 UIEdgeInsets に関連する Tips 第5段です。 RLRTextView を作る まず、“UITextView:キーボード絡みの挙動・問題点”を解決するためのクラス RLRText
画面上に UITextView がある場合、キーボードが競り上がったときに被ってしまう領域を考慮して UITextView を調節する必要があります。 今回は、UIEdgeInsets に関連する Tips 第4段として、UITextView をキーボードと連携させる方法を紹介します。 “キーボードに合わせて画面を上げ下げする”では、UIScrollView の contentInset と scrollIndicatorInsets を調節することで、キーボードに隠れてしまう領域ができる問題を回避しました。UITextView も UIScrollView のサブクラスなので同じ方法が使えそうですが、実は使えません。“UITextView:キーボード絡みの挙動・問題点”で説明した通り、UITextView の contentInset.bottom はいろいろなタイミングで変わってしまう
画面の下の方に TextField がある場合、キーボードが競り上がっても隠れないよう、キーボードが競り上がるのに合わせて画面をにょいっと上げてやる処理が必要になります。 今回は、UIEdgeInsets に関連する Tips 第2段として、キーボードに合わせて画面を上げ下げする方法を紹介します。 まずは、”Lorem ipsum…” UITextView、”Name:” UILabel、UITextField を、UIScrollView に入れます。このビュー構成で次のことをします: キーボードが上がり下がりするタイミングを知らせてもらえるようにする キーボードが競り上がるのに合わせて、画面を上げる キーボードの Done ボタンが押されたら、キーボードを隠す キーボードが隠れるのに合わせて、画面を下げる キーボードが上がり下がりするタイミングを知らせてもらえるようにする キーボードが
前回の記事「UITableViewCell の背景を画像にする」では、UITableViewCell とそれに乗った UILabel の背景色が意図せずに変わってしまう現象を紹介しました。 UITableViewCell の背景色を任意の色にしたい場合も、同じ原因で意図した色にならない問題に遭遇することがあります。 今回は、前回のおさらいをしながら、セルの背景色が交互に替わるテーブルビューを作りたいと思います。 以下のコードは、UITableView の dataSource オブジェクトが UITableViewCell を返すところです。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // Assure cell UITab
UITableViewCell の背景を画像にする場合、UITableViewCell の backgroundView プロパティに UIImageView をセットします。しかし、これだけでは問題が発生してしまうことがあります。 今回は、その問題を乗り越えて、UITableViewCell の背景を画像にする方法を紹介します。 以下のコードは、UITableView の dataSource オブジェクトが UITableViewCell を返すところです。UITableViewCell の背景を画像にしたいので、backgroundView プロパティに UIImageView をセットしています。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)
ナビゲーションバーの背景を画像にしたい。そうすることによって、アプリケーションの世界観を前面に押し出したい。たとえば「iBooks」のように。たとえば「メモ」のように。 「そんなの簡単。UIImageView を UINavigationBar に insertSubview: atIndex: すればよいだけの話」と思いきや、そうではありませんでした。ある問題があったのです。 今回は、まずその問題を明らかにし、その問題を踏まえた上で、ナビゲーションバーの背景を画像にする方法を紹介します。 ナビゲーションバーの背景を画像にするとき、真っ先に思いつくのが「UINavigationBar に UIImageView を insertSubview: atIndex: する」という方法ではないでしょうか。 // Get navigationBar UINavigationBar *navigat
これまでの記事で、KVC (Key-Value Coding) によるオブジェクトの取得についていろいろと見てきました。NSSet と NSArray の特別な挙動や、 NSDictionary の特別な挙動、Set And Array Operators をマスターすることで、取得できるオブジェクトの幅が広がりました。しかし、デフォルトの KVC には弱点があります。 今回は、その弱点を明らかにし、valueForKeyPath: メソッドを拡張することで、その弱点を克服してしまいます。 デフォルトの KVC には弱点があります。まずは、その弱点を明らかにしたいと思います。 例えば、次のような NSDictionary 型変数 bowling があるとします。 bowling = { players = ( { name = A; scores = ( 120, 150, 180 );
KVC (Key-Value Coding) に於ける NSSet と NSArray の挙動は特殊なものとなっています。これを把握しておくと、NSPredicate でできることの幅が増えたり、Cocoa Bindings でできることの幅が増えるなどの利点があります。 今回は、KVC に於ける NSSet と NSArray の挙動を確認します。 NSSet と NSArray の valueForKey: メソッドは、NSObject のそれとは少し違う挙動を取ります。 [setOrArray valueForKey:key]; このとき、NSSet は、自分が持っている各メンバーに対して valueForKey: を実行し、それによって得られたオブジェクトをセットに収集し返します。 // Make set NSSet *set; set = [NSSet setWithObject
KVC (Key-Value Coding) の Set And Array Operators をマスターすると、コードを簡素化できたり、NSPredicate でできることの幅が増えたり、Cocoa Bindings でできることの幅が増えるなどの利点があります。Set And Array Operators の概要から始まったシリーズ。 これまでの数回で、Set And Array Operators の基本的な使い方をマスターしました。今回は、Set And Array Operators のもう少し高度な使い方として、Set And Array Operators をひとつのキーパスに複数入れる技を紹介したいと思います。 Set And Array Operators は、ひとつのキーパスに複数入れることができます。この技をマスターすると、valueForKeyPath: で取得
Core Animation Programming Guide を読んでいると、Key-Value Coding Compliant Container Class というものが登場します。この記事では、Key-Value Coding Compliant Container Class の説明とその使い方について説明します。 Key-Value Coding Compliant Container Class は「任意のキーに任意の値を設定することができるクラス」のことを言います。 値の設定 [obj setValue:someValue forKey:someKey]; someKey に someValue を設定することができます。 値の取得 [obj valueForKey:someKey]; someKey に設定した値を取得することができます。 例えば、CAAnimatio
KVC (Key-Value Coding) の Set And Array Operators をマスターすると、コードを簡素化できたり、NSPredicate でできることの幅が増えたり、Cocoa Bindings でできることの幅が増えるなどの利点があります。今回から数回に渡って、Set And Array Operators を取り上げます。 初回である今回は、Set And Array Operators の概要を説明します。 Set And Array Operators は、valueForKeyPath: に渡すキーパスに、ちょっとした演算を組み込むための演算子です。 以下の11こが用意されています: @avg @count @distinctUnionOfArrays @distinctUnionOfObjects @distinctUnionOfSets @max @
このページを最初にブックマークしてみませんか?
『runLoop run];』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く