この1つは私を悩ましています。私が持っている私はこのようなUIViewController
のviewDidLoad
方法何かで作成したCALayer
:CALayerはコンテンツを表示しません
- (void)viewDidLoad {
[super viewDidLoad];
UIImage* img = [UIImage imageNamed:@"foo.png"];
_imageLayer = [[CALayer alloc] init];
_imageLayer.bounds = CGRectMake(0, 0, img.size.width, img.size.height);
_imageLayer.position = CGPointMake(self.view.bounds.size.width/2.0, self.view.bounds.size.height/2.0);
_imageLayer.contents = (id)img.CGImage;
_imageLayer.contentsScale = img.scale;
[self.view.layer addSublayer:_imageLayer];
[_imageLayer setNeedsDisplay];
}
UIViewController
は、ペン先からロードされたコードで作成されたUITabBarController
に配置されます。
私の問題は、UIViewController
が表示されたときにCALayer
がそのUIImage
の内容を表示しないということです。私がCALayer
をUIImage
にレンダリングさせる唯一の方法は、viewDidAppear:
メソッドのように、UIViewController
が可視になった後にその内容をUIImage
に設定することです。
viewDidLoad
の方法ですべての設定を行うのが本当に好きです(それは何のためですか?)。 CALayer
にコンテンツを表示させるにはどうすればよいですか?
新しいレイヤー(変更されていない)で '-setNeedsDisplay'を呼び、ビューのレイヤーではないのはなぜですか? –
レンダリングするだけの簡単な試みです。 – kamprath
ああ待って、私はあなたのポイントを参照してください。 '[_imageLayer setNeedsDisplay];を取り除くとうまくいきます。そこには何が起こっていますか? – kamprath