2

OS X から iOS に CALayer を移植しています。

シングル ビュー アプリケーションを作成し、バンドル内の画像「body.png」をコピーして、UIView サブクラスを定義しました。

このメソッドは、画面をタッチすると画像を表示するレイヤーが追加されることを期待していますが、画像は表示されず、フレームのみが表示されます。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch * aTouch = [touches anyObject];
CGPoint loc = [aTouch locationInView:self];
CGPoint p=loc;
CALayer * body = [CALayer layer];
UIImage * img =[UIImage imageNamed:@"body.png"];
[body setBounds:CGRectMake(0, 0, 200, 200)];
[body setPosition:p];

if (img) {
    NSLog(@"body.png loaded");
        [body setBorderWidth:1];
        [body setBorderColor:[[UIColor blackColor] CGColor]];
        [body setContents:(id)img];
    }
    else {
        [body setBackgroundColor:[[UIColor blueColor] CGColor]];
    NSLog(@"body.png not loaded");
    }

    [[self layer] addSublayer:body];
}

何が欠けていますか?

4

1 に答える 1

2

行を変更する

[body setContents:(id)img];

[body setContents:(id)img.CGImage];
于 2013-03-27T17:50:41.507 に答える