我正在尝试为sprite工具包创建一个应用程序的原型,我现在可以以编程方式绘制精灵,然后再制作实际精灵对我有利。我做了一个粗略的循环,当我使用renderInContext转换为UIImage(或CGImage)时,它显示在带有黑色背景的精灵视图上,显然忽略了alpha通道。如果我将UIImage作为UIImageView添加到常规视图中,则会正确呈现Alpha通道。我想知道我做错了什么,或者如果这是一个解决方法。
float rockSize = 100;
UIView* drawingView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];
drawingView.backgroundColor = [UIColor clearColor];
CALayer* circleLayer = [CALayer layer];
circleLayer.frame = CGRectMake(0,0,rockSize,rockSize);
circleLayer.backgroundColor = [Utils getTiledColorFromColor:[UIColor purpleColor]].CGColor;
circleLayer.cornerRadius = rockSize/2.0;
circleLayer.masksToBounds = YES;
[drawingView.layer addSublayer:circleLayer];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(rockSize, rockSize), NO, [UIScreen mainScreen].scale);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [UIColor clearColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0,0,rockSize,rockSize));
[drawingView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *layerImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
SKSpriteNode *rockNode = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImage:layerImage]];
CGPoint position = CGPointMake(200,100);
rockNode.position = position;
[self addChild:rockNode];
答案 0 :(得分:3)
如果视图的opaque
属性设置错误地设置为YES
而实际上不透明(通常会在以编程方式创建视图时发生这种情况,opaque = YES),则会出现这种影响是默认的。)
您可以通过将opaque
设置为NO
来解决此问题。