以前、-[NSImage setFlipped:] が Deprecated になったことを紹介した。
Cocoaの日々: NSImage の isFlipped/setFlipped: が Deprecated
その時の対処方法として NSAffineTransform を使う方法を紹介したが、そんなことをしなくても NSImage に新しいメソッドが追加されていることがわかった(Kenさん Thanks)。
Mac Dev Center: NSImage Class Reference
これを使うと次のコードを書き換えられる。
v10.5まではこうだった。
[image setFlipped:YES];
[image drawInRect:[self bounds]
fromRect:NSZeroRect
operation:NSCompositeSourceOver
fraction:1.0];
v10.6からこう書ける。
[image drawInRect:[self bounds]
fromRect:NSZeroRect
operation:NSCompositeSourceOver
fraction:1.0
respectFlipped:YES
hints:nil];
なお最後の hints では NSAffineTransform と NSImageHintInterpolation を指定することができる。1つのメソッドで描画だけでなく Affine変換や拡大縮小画質の指定ができるようになった。これは便利。
Mac Dev Center: NSImage Class Reference