ios - 以编程方式为带有 alpha channel 的 spritekit 绘制 Sprite ?

标签 ios objective-c sprite-kit

我正在尝试为 Sprite 套件制作一个应用程序的原型(prototype),如果能够以编程方式绘制我现在需要的 Sprite ,然后再制作实际的 Sprite ,这对我来说是有利的。我做了一个粗略的圆圈,当我使用 renderInContext 转换为 UIImage(或 CGImage)时,它显示在带有黑色背景的 sprite View 上,显然忽略了 alpha channel 。如果我将 UIImage 作为 UIImageView 添加到常规 View ,则 alpha channel 会正确呈现。我想知道我做错了什么,或者是否有解决方法。

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];

最佳答案

当 View 具有 opaque 时,经常会出现这种当您看到黑色 View 背景时的影响。属性错误地设置为 YES实际上是不透明的(通常在以编程方式创建 View 时发生这种情况,默认为 opaque = YES)。

例如,您可以通过设置 opaque 来解决此问题。至NO .

关于ios - 以编程方式为带有 alpha channel 的 spritekit 绘制 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665231/

相关文章:

ios - 显示 AFNetworking+UIImageView 占位符图像,但不显示 URL 图像

ios - 使用 CGImageDestinationFinalize 创建大型 GIF - 内存不足

ios - 如何滑动以删除特定部分中的行

swift - SpriteKit - 获取 SKNode 的绝对大小

objective-c - Swift SKScene 在 Objective-C 项目中显示为空白

android - 适用于平板电脑的 html5 应用程序 : possible to load images from device's filesystem?

ios - 在没有符号的设备上调试 iOS 应用程序

ios - ipad safari 等浏览器应用程序中的新标签栏功能

ios - 使用 objective-c 以编程方式设置 subview View Controller

ios - 限制 gameScene 的边