プログラマメモ2 - programmer no memo2

CALayerでsetNeedsDisplayするときの注意 2011/11/20

CALayerにたいしてsetNeedsDisplayするときの注意です。
下記のようなコードをつかって、表示する場合にsetNeedsDisplayしたりすると、表示されなくなる。

UIImage *img1 = [UIImage imageNamed:@"aaa.png"]; CALayer *layer = [CALayer layer]; layer.contentsScale = [[UIScreen mainScreen] scale]; layer.contents = (id)img1.CGImage;
おそらく,setNeedsDisplayが
レイヤインスタンスにコ ンテンツをキャッシュし直す
させるということに関係するのかな。

CALayerのretina対応 contentsScaleを2 2011/11/13

core animationだ!!ということで、CALayerのサブクラスをつくり、drawInContextを実装してがりがり書いて動かすとどうも、ジャギーが目立つというかなんというか表示したイメージきれいでないことに気がつく。 で、アンチエイリアスが効いてないのかなーとかとんちんかんな調べものをしていてようやく、contentsScaleを変更すればいいところにたどりつく。

おそらく正しいやり方は
[[UIScreen mainScreen] scale];
をlayaer.contentsScaleに設定するのが正しいやり方のだろう。
参考
OpenGL ESのRetina対応 - Objective-Audio
iphone - Retina display core graphics font quality - Stack Overflow

UIBarButtonItemに画像使いたいなー 2011/11/03

InterfaceBuilderをぜんぜんつかってなかったのですが、やはりウィジットを配置してすぐにためせるのはやはりInterfaceBuilder便利。 UIBarButtonItemに画像使いたいなーと思っていろいろいじってたら、IBで簡単に設定できました。 ImageInset使ってサイズを調整できます。