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

CALayerをアッド 2012/05/05

cocoaです。CALayerをviewにaddです。すぐにコードがでてこなかったので。

UIImage *image = [UIImage imageNamed:@"help.png"]; CALayer* layer=[CALayer layer]; layer.contents = (id)image.CGImage; [layer setBounds:CGRectMake(0,0,image.size.width,image.size.height)]; [layer setPosition:CGPointMake(160,240)]; [layer setAnchorPoint:CGPointMake(0.5f,0.5f)]; [self.view.layer addSublayer:layer];

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