タグ

ブックマーク / ez-net.jp (15)

  • Xcode 5 のアセットカタログでアイコンや画像を管理する : Objective-C プログラミング

    Asset Catalog Xcode 5 では Asset Catalog を使うことで、アイコンや画像などを一元管理できます。 アプリのアイコンや起動イメージについては、これまでもターゲットの General 設定のところからデバイスの種類ごとに登録できるようになっていて管理しやすかったですけど、そこで登録したアイコンなどは、これまではひとつひとつのファイルとしてプロジェクトに追加されていました。 通常の画像イメージも、ひとつの画像に対してもうひとつ Retina 用の 2 倍の解像度を持ったファイルを用意する必要があって、画像が多くなったときにファイルの数が膨れ上がります。 そんな増えがちな複数ファイルの画像リソースを、このアセットカタログを使うことで、ひとつの .xcassets ファイルとして扱えるようになります。 Asset Catalog を使用する Asset Catalo

    efcl
    efcl 2013/11/08
    xcassertを使った画像の読み込み
  • iOS 6 と iOS 7 のレイアウトのズレを吸収する : iPhone プログラミング

    iOS 7 からデザインコンセプトが変更されて、同じレイアウトの画面を iOS 6 と iOS 7 とで表示させたときに、実際のレイアウトがずれる場合があります。 そして Xcode 5 では、その違いを埋める方法として iOS 6/7 Deltas という設定項目が用意されました。 例えばステータスバーの存在の違い たとえば iOS 7 環境では、ステータスバーが原則的にルートビューに重ねて表示されるようになりました。 これは iOS 7 のレイヤーを重ねる発想とコンテンツを大事にコンセプトに依るもので、ステータスバーなどにも透明感を持たせ、その下のコンテンツの存在感を示すのには不可欠な存在です。 ただ、iOS 6 と iOS 7 両対応の画面をデザインするとき、見た目だけでなくて座標も変わってくるので注意が必要です。 iOS 6 ではいちばん上を Y=0 でレイアウトすればいいのは変わ

    efcl
    efcl 2013/09/21
    iOS7のDeltaでの位置調整について
  • iOS シミュレーターが勝手にスローモーションになるのを防ぐ

    efcl
    efcl 2013/08/05
    Shift連打でスローモになってしまうのをKeyRemap4MacBookで対処する
  • DTMF と自作アプリの軌跡について yidev@渋谷勉強会で発表しました。

    2013 年 6 月 22 日に開催された yidev@渋谷勉強会 第一回 で発表してきました。 参加者の募集が始まってすぐに満席になるという大盛況な勉強会で、自分も間に合わずに補欠登録だったのですけど、開催の 1 週間前に、補欠者でもまだ発表枠で参加できるとの知らせが舞い込んできました。 発表枠のお話を聞いたとき、私用で 2 日間岐阜へ出かける予定が入っていたりもして、資料を作る時間があるか不安でしたが、記念の第 1 回目勉強会だし参加したいと思っていたので、思い切って参加表明させて頂きました。 そのおかげで岐阜のホテルでも親戚の家でも、資料の作成に追われてましたけどね。 小学生の甥っ子に「まだ宿題が終わらなくて」と言ってみたら「それは大変ですねぇ」と協力してくれたので助かりました。なんて教育のしっかり行き届いたお子さまなのでしょう。 ちなみに関係ないですけど、その少年は "終わるのに

    efcl
    efcl 2013/06/25
    音通信、波形の合成、送信方法。 AudioToolBoxで/System/のサウンドを再生する方法。
  • メソッド名で戻り値を制御する - Automatic Reference Counting

    メソッドに従来のような命名規則、getMethod や newMethod という名前を付けるとどうなるのでしょう。 このような名前で NS_RETURNS_RETAINED といった制御を付けずに動作を試してみたところ、getMethod の方は autorelease 的な動きを見せたのに対し、newMethod の方は retain 的な動きを見せました。 どちらとも、関数内では alloc & init したものを戻り値としてあったのですけど、ARC ではメソッド名(メソッドファミリ)によって、戻り値の状態を自動的に整えてくれる感じのようです。 ARC でメソッドファミリとして認識するキーワードとしては "alloc", "copy", "mutableCopy", "new", "init" があるようです。 これらの名前で始まるメソッドは、自動的に "NS_RETURNS_RE

    efcl
    efcl 2013/06/18
    メソッド名の流儀を整えるLLVM拡張 __attribute__((objc_method_family(X)))
  • プロパティへの書き込みを外から監視する : Objective-C プログラミング

    // 監視対象のプロパティセッターが呼び出されると、このメソッドが実行されます。 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { } keyPath にはセッターが呼び出された監視対象のプロパティ名が(今回の例では @"text" が)指定されます。ofObject には監視対象のインスタンスが(今回の例では _label が)渡されます。 複数のインスタンスやプロパティを監視している場合には、どれが変更されてもこのメソッドが呼び出されるので、これら keyPath や ofObject の内容や、-addObserver:forKeyPath:options:context: の co

    efcl
    efcl 2013/05/25
    KVOのoptionsの説明 NSKeyValueObservingOption
  • Interface Builder から独自プロパティを設定する : Objective-C プログラミング

    Xcode 4 では、User Defined Runtime Attributes という機能を使って、独自に実装したクラスのプロパティを Interface Builder を使って指定することができるようになっています。 たとえば、次のようなプロパティを持つクラス EzGradientButton が実装されていたとします。 imageMonochromeColor このような独自のプロパティは、Objective-C ソースコードから設定するのが一般的な方法だと思うのですが、そのためにわざわざ IBOutlet プロパティを用意したり viewDidLoad: メソッドにコードを書いたりするのは面倒です。 ましてや同じ UIViewController の派生クラスを使いながら、たとえば iPhone 用と iPad 用のように異なる Nib を使い分けるような場合、それぞれで違う

    efcl
    efcl 2013/01/20
    User Defined Runtime Attributesの使い方について。Localized String 型なんてあったんだ
  • Objective-C の atomicity について調べてみる

    Objective-C のプロパティには、属性として atomic や nonatomic というキーワードが指定できるようになっています。 これらを省略した場合は atomic が指定されたのと同じで、この "atomic" という単語を直訳すると "原子性" とか "不可分" とか、そういった意味合いになります。 このキーワードを知った当初には、次のような意味合いがあると認識していたのですけど、どうやらちょっと思っていたのと違うようです。 atomic は、マルチスレッド環境でスレッドセーフを実現する、らしい。 atomic プロパティを @synthesize で実装すると、setter や getter を @synchronized (self) で括ったのと同じになる、らしい。 それならつまり、単一スレッドでの使用を前提としないクラスを作成するときは、プロパティは atomic

    efcl
    efcl 2012/12/04
    排他的、atomic, nonatomic について
  • 他の UIView の内容を表示位置を加味して自分自身に描画する : Objective-C プログラミング

    Objective-C では、他の UIView の描画内容を、自分自身に簡単に描画することが可能です。 単純な方法としては 他の UIView の内容を自分自身に描画する で記した方法がありますけど、この方法だと、別のビューに設定されている frame の origin は考慮されずに、左上を原点にして内容が描画される様子です。 今回は、別のビューの frame.origin も考慮して、自分自身の任意の場所に描画したかったので、その実現方法を調べてみました。 たとえば、label 変数に格納した UILabel の内容を自分自身のコンテキストに、ラベルの表示位置 (label.frame.origin) も加味して絵として描画したい場合には、次のような感じにすれば良さそうです。 // 現在のコンテキストを取得します。(UIView の drawrect: メソッド内で実行します) CG

    efcl
    efcl 2012/07/07
    UIViewの描画内容を他のlayerに描画する
  • Xcode でコード補完ができなくなった場合の対処方法 : Objective-C プログラミング

    Xcode 4.3 を使っていると時々、コード入力補完(インテリセンス)やコードの色づけ(シンタックスハイライト)が無効になることがあります。 色が付かないとコードも見にくなりますし、補完コードが出てきてくれないと不便どころかもはや困って仕方なかったので、インターネットで調べてみたのですけど、各所で言われる Derived Data の削除では復旧できないことがほとんどでした。 それでも仕方ないと我慢するにはあまりに不便だったので、なんとかこれらの機能を復帰させる方法がないかと試行錯誤していたところ、おそらくほとんどのケースで復旧できる方法が見つかりました。 少なくとも Xcode 4.3.2 で試す限りでは次の方法で、ほとんどの場面で即座に、場合によっても数分のうちに、コード補完と色付けが復旧してくれています。 方法 1 : Other C フラグを編集する 何故か突然コードの着色がほと

    efcl
    efcl 2012/07/07
    コード補完やハイライトが壊れてた時の対処
  • NSUserDefaults のアプリケーション設定をリセットする : Objective-C プログラミング

    efcl
    efcl 2012/06/07
    バンドル識別子を利用して一括削除
  • iPhone アプリのビルド番号を自動的に更新する : Objective-C プログラミング

    Xcode 4.2 の iOS アプリでは、ビルド番号を設定できるようになっています。 プロジェクトの TARGETS にあるアイコンを選択すると "Summary" のところで Build 番号を設定できるようになっています。 この値は、実際にはこのアプリ用の Info.plist に "Bundle version" (CFBundleVersion) に記録されています。 ビルド番号を自動更新するスクリプト ビルド番号を変更する場合、通常はそれらを手で調整してビルドしてあげる感じになりますが、スクリプトを使ってビルドの度に、自動で更新することもできます。 スクリプトでビルド番号を更新するには、次のようなスクリプトを使います。 echo "Update build number." INFOPLIST="${SRCROOT}/${PROJECT_NAME}/${PRODUCT_NAME

    efcl
    efcl 2012/05/17
    ビルド回数を設定
  • UITableView に独自のセルを表示する : Objective-C プログラミング

    UITableView には、独自に設計したカスタムセルを表示できるようになっています。 たとえば、左にアイコン画像とその右にテキストを配置したセルを作成したいとします。もっとも、このようなセルなら標準の UITableViewCell でできるようになっているのですけど、ともあれ練習として、見て行きたいと思います。 標準の UITableViewCell で画像を表示する方法については UITableView のセルに画像を表示する に記してみました。画像を表示するだけであれば、標準のセルを使った方が簡単です。 今回は iOS 5.0 よりも前のバージョンでおなじみの NIB による方法で作成してみます。 なお、以下のコードは ARC (Automatic Reference Counting) を前提に記載していますので、ARC が有効でない場合には retain や release

    efcl
    efcl 2012/03/14
    xibでカスタムセルを作成。 UIViewControllerのviewをカスタムセルとして読み込む
  • iPhone や iPad の画面サイズ早見表 : iPhone プログラミング

    iPhoneiPad でコントロールをレイアウトしようと思ったときに、どこからどこまでが何ピクセルとかわからなくなることが多かったので、画面サイズの早見表を作ってみました。 また、条件を選択して行くとそのときの画面サイズが表示されるものも用意してみました。

    efcl
    efcl 2011/12/29
    iPhoneとiPadのViewやナビゲーション、タブバー、ツールバーなどのpxサイズが一覧でまとまってる
  • デバイス回転時の通知やメソッドの実行の流れ : Objective-C プログラミング

    iPhoneiPad でデバイス回転時に UI のレイアウトを調整するプログラムを作成していたときのことでした。 キーボードを表示した際に、キーボードが邪魔をしないように入力フィールドの位置を移動させておいて、キーボードを隠した際に元に戻すというプログラムを組んでいたのですけど、デバイスを回転した際に、それを上手く制御できないことがありました。 キーボードの表示非表示を切り替えた際には、通知センター (NSNotificationCenter) から UIKeyboardWillShowNotification, UIKeyboardDidShowNotification, UIKeyboardHideShowNotification, UIKeyboardDidHideNotification を受け取ることが出来ますけど、この通知はデバイスを回転して、ユーザーインターフェイスが回

    efcl
    efcl 2011/12/21
    デバイスの回転遷移図 回転時に発生するイベントのまとめ
  • 1