Cocoa

width, height がマイナスだと交差判定関数は正しく動作しない

どのフレームワークでも同じような問題を抱えているようです。 NSPointInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) や NSMouseInRect(NSPoint aPoint, NSRect aRect) といった交差判定用の関数は、判定領域 aRect の width, height がマイナスだと…

Interface Builder で Form の警告 "This view is clipping its content." を解決する

Form を使っていると、"This view is clipping its content." という警告が出ることがあります。 Interface Builder で確認してみると、Form の下に + マークが出現していることが分かります。次に、Form を選択中に表示されるキーボードマークをクリックす…

16 進数の文字列 (NSString) を数値型 (int) に変換する

NSColor が気の利かない子なので、#FFFFFF など 16 進数の色指定を各要素ごと自前で解析することに。 @"FF" のように、16 進数を表した NSString は、NSScanner の ScanHexInt: メソッドで、(unsigned)int 型の 255 に変換できます。文字列は @"0xFF", @"0XF…

OCUnit のガベージコレクション設定は、テスト対象のターゲットと同じにする

Google サイト が効率的だったので、参考にしながら Unit Test Bundle ターゲットを作成したのですが、テストが成功しない(エラー検出されない)不具合に陥りました。 参考ページのサンプルプロジェクトをダウンロードして実行すると、正常に動作するため、…

CALayer を画像ファイルとして出力する

色々と便利な CALayer ですが、NSView に比べて画像ファイル化しにくい印象を受けます。 CALayer を画像として取得するには、新規作成したコンテキストに CALayer.renderInContext: メソッドでレンダリングし、CGBitmapContextCreateImage() 関数で CGImageR…

anchorPoint は CALayer 配置の強力なサポーター

例えば View の中心に Layer の中心を合わせたり、View の隅に Layer の隅を合わせたりしたい場合、CALayer の anchorPoint プロパティを有効活用すると便利です。 anchorPoint は 0.0 から 1.0 までの正規化座標値(デフォルトで {0.5, 0.5} )を取り、setP…

シングルトンを複数の .xib ファイルで使用する

Singleton クラスのプロパティを 複数の InterfaceBuilder(.xib) ファイルから参照できるようにすれば、同期のためのソースコードを簡略することができます。 各 .xib ファイルで同一の Singleton インスタンスが得られるように、SelectionManager という Si…

NSImageView が画像ファイル名からパスを得る ResourcePathTransformer

プロパティリストに画像ファイル名を記述し、それを InterfaceBuilder の NSImageView Value Path とバインディングさせたい。しかし Value Path はパスしか受け付けないため、画像ファイル名をパスに変換する ResourcePathTransformer を作って対処します。…