2017-08-27 12 views
1

1.iはCAshapelayerを作成しました。また、CAshapelayerにも1つのlableを挿入しましたが、現在はレイヤーで画像を設定しようとしていますが、動作しませんでした。現金化レイヤーの画像を設定できません

  1. このレイヤーのズームインアニメーションに役立てます。

     CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
    [circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 250, 100, 100)] CGPath]]; 
    circleLayer.contents = (id)[[UIImage imageNamed:@"001-forward.png"] CGImage]; 
    circleLayer.contentsGravity=kCAGravityResize; 
        // circleLayer.masksToBounds = YES; 
    [circleLayer setStrokeColor:[[UIColor brownColor] CGColor]]; 
    [circleLayer setFillColor:[[UIColor clearColor] CGColor]]; 
    
    [[self.view layer] addSublayer:circleLayer]; 
    CATextLayer *label = [[CATextLayer alloc] init]; 
    [label setFont:@"Helvetica-Bold"]; 
    [label setFontSize:15]; 
    [label setFrame:CGRectMake(50,300, 100, 50)]; 
    [label setString:@"GM"]; 
    [label setAlignmentMode:kCAAlignmentCenter]; 
    [label setForegroundColor:[[UIColor greenColor] CGColor]]; 
    
    [circleLayer addSublayer:label]; 
    
+1

イメージ名から.pngを削除し、コードを試してイメージが設定されているかどうかを確認してください。 – 3stud1ant3

+0

アニメーションをズームすることを意味するものは、gifやその他のものを投稿できますか? –

+0

@ 3stud1ant3何も変わらない – Abhiram

答えて

1

ここでの主な問題は、あなたがここにUIImage as CAShapeLayer contentsを見ることができるように、私はCALayerに画像を追加し、コードを変更してまでその層を追加していた、あなたはCAShape LayerのコンテンツとしてUIImageを追加can'tということですあなたのcircleLayer

CGRect frame = CGRectMake(50, 250, 100, 100); 
// Do any additional setup after loading the view, typically from a nib. 
CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:frame] CGPath]]; 
circleLayer.contentsGravity=kCAGravityResize; 
// circleLayer.masksToBounds = YES; 
[circleLayer setStrokeColor:[[UIColor brownColor] CGColor]]; 
//[circleLayer setFillColor:[[UIColor clearColor] CGColor]]; 

[[self.view layer] addSublayer:circleLayer]; 
CATextLayer *label = [[CATextLayer alloc] init]; 
[label setFont:@"Helvetica-Bold"]; 
[label setFontSize:15]; 
[label setFrame:CGRectMake(50,300, 100, 50)]; 
[label setString:@"GM"]; 
[label setAlignmentMode:kCAAlignmentCenter]; 
[label setForegroundColor:[[UIColor greenColor] CGColor]]; 

CALayer * imageLayer = [CALayer layer]; 
[imageLayer setContents: (__bridge id _Nullable)([[UIImage imageNamed:@"test"] CGImage])]; 
imageLayer.frame = frame; // Define a frame 
imageLayer.contentsGravity=kCAGravityResize; 

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
[maskLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, frame.size.width, frame.size.height)] CGPath]]; 
imageLayer.mask = maskLayer; 

[circleLayer addSublayer:imageLayer]; 
[circleLayer addSublayer:label]; 

enter image description here

+0

ありがとうございます。このサークルレイヤーを作成してアニメーションを拡大する必要があります – Abhiram

0

はこの

をお試しください
CAShapeLayer *circleLayer = [CAShapeLayer layer]; 
[circleLayer setPath:[[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 250, 100, 100)] CGPath]]; 
circleLayer.bounds = [[UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 250, 100, 100)] bounds]; 
circleLayer.masksToBounds = YES; 
[circleLayer setStrokeColor:[[UIColor brownColor] CGColor]]; 
//Use .png if you store your image outside of .xcassets 
circleLayer.fillColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"001-forward.png"]].CGColor; 

[[self.view layer] addSublayer:circleLayer]; 
関連する問題