2011-04-07 87 views

回答

0

这是目前不可能的。如果您认为应该支持,我会建议提交雷达(http://bugreport.apple.com)

参见:Can a CGImage be added to the contents property of a CAShapeLayer?

+0

嗨casademora,谢谢你的回答。那么扭曲形状的最佳方式是什么,例如贝塞尔路径?我必须移动到OpenGL ES和纹理吗? – LocoMike 2011-04-29 08:33:23

+0

当我发现该选项不受支持时,我停止了我的调查。我的猜测是,使用OpenGL会给你更多的选择......你可以创建一个形状,并将图像映射为纹理,但这与我对openGL的了解一样多::( – casademora 2011-05-03 19:55:02

2

它是不可能这样做的,但我成功地通过把一个的CALayer在上面CAShapeLayer这样做。 这是我的代码:

CALayer *image =[CALayer layer]; 
image.frame = CGRectMake(0, 0, 75, 75); 
image.contents = (id) [UIImage imageNamed:@"number-1"].CGImage;  
[self.layer addSublayer:image]; 



UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 75, 75)]; 
blueCircleLayer = [CAShapeLayer layer]; 
blueCircleLayer.path = circle.CGPath; 
blueCircleLayer.strokeColor = [UIColor blueColor].CGColor; 
blueCircleLayer.fillColor = [UIColor clearColor].CGColor; 
blueCircleLayer.shadowColor =[UIColor blackColor].CGColor; 
blueCircleLayer.shadowOffset = CGSizeMake(0.0f, 5.0f); 
blueCircleLayer.shadowOpacity = 0.7f; 
blueCircleLayer.lineWidth = 7.0; 

[self.layer addSublayer:blueCircleLayer]; 
+0

在正确的轨道上,扩展从此并将'image'的掩码设置为'blueCircleLayer'。 – 2017-09-01 14:00:42