普段からお世話になっているサイトではCALayerの使い方として
– (void)viewDidLoad {
// UIImage* 型のプロパティ self.image があると仮定して・・・
CALayer *l = [CALayer layer];
l.contents = self.image.CGImage;
l.position = CGPointMake(255, 255) // l.position はデフォルトではレイヤー中央の座標になります
[self.view.layer addSubLayer:l];
}
てな感じにしてますが、これだと通らない。信じて送り出したコードなのに…
これでドツボもはまるも、他のところでもCALayer使っててそれはなかんべ、と諸々探った結果こういうコードでいいことが判明。
CALayer* layer = [CALayer layer];
layer.frame = CGRectMake:(0, 0, image.size.width, image.size.height);
layer.contents = (id)self.image.CGImage; // 最近はちゃんとidでキャストしてブリッジしないと起こられる
[self.view.layer addSubLayer:layer];
layer.frame = CGRectMake:(0, 0, image.size.width, image.size.height);
layer.contents = (id)self.image.CGImage; // 最近はちゃんとidでキャストしてブリッジしないと起こられる
[self.view.layer addSubLayer:layer];
[余談]
レイヤを全部消すときは単純に
self.view.layer.sublayers = nil;
とすればいい。NSArray*なのにいいのかなぁと思ったが、addSublayerするときによろしく処理してくれるらしい。