gpt4 book ai didi

ios - SKTexture 和 UIImage 的缩放属性

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:57 24 4
gpt4 key购买 nike

当通过 textureWithImage: 构建时,SKTexture 似乎忽略图像的 .scale 有什么原因吗?

我有一个可用的图像资源,“retina_image@2x.png”

当我首先创建 UIImage 时尝试创建纹理时:

UIImage* image = [UIImage imageNamed:@"retina_image"];
SKTexture* texture_image = [SKTexture textureWithImage:image];
NSLog(@"image size %@, scale %f", NSStringFromCGSize(image.size), image.scale);
NSLog(@"texture from image, size %@", NSStringFromCGSize(texture_image.size));

我得到以下结果:

image size {50, 50}, scale 2.000000
texture from image, size {100, 100}

虽然我希望得到

image size {50, 50}, scale 2.000000
texture from image, size {50, 50}

由于图像的大小(以磅为单位)为 50x50
这也是你直接用资源构造纹理时得到的:

SKTexture* texture_named = [SKTexture textureWithImageNamed:@"retina_image"];
NSLog(@"texture named, size %@", NSStringFromCGSize(texture_named.size));

给出以下输出(如预期):

texture named, size {50, 50}

这表明 SKTexture 在从图像构造时确定自己的大小时忽略比例属性,而在从图像名称构造时适本地考虑比例。
这是预期的行为吗?

(显然在我的真实代码中,我创建了我想以编程方式而不是通过 imageNamed 在纹理中使用的 UIImage)

编辑:这是 SpriteKit 中的一个(已确认)错误,已在 iOS8 中修复

最佳答案

我也发现了这一点,并认为这是一个错误。不确定 Apple 将如何纠正这个问题,因为它可能会破坏现有代码。

我的解决方法是读取 UIImage 的比例,然后将 SKSpriteNode 的比例设置为 1.0/scale。您需要对 SKSpriteNode 的 x 和 y 尺度执行此操作。

关于ios - SKTexture 和 UIImage 的缩放属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com