ios - UIImage imageNamed : always returns image at 1x

标签 ios objective-c uiimage xcasset

这是我的代码:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self baseInit];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    if ((self = [super initWithCoder:aDecoder])) {
        [self baseInit];
    }
    return self;
}

- (void)baseInit {
    _selectedImage = [UIImage imageNamed:@"SelectedStar"];
    _deselectedImage = [UIImage imageNamed:@"DeselectedStar"];
    _rating = 6.5f;
    _editable = NO;
    _imageViews = [[NSMutableArray alloc] init];
    _maxRating = 10;
    _minImageSize = CGSizeMake(5, 5);
    _delegate = nil;

    [self setBackgroundColor:[UIColor whiteColor]];
}

- (void)drawRect:(CGRect)rect {
    NSLog(@"Star size: %@", NSStringFromCGSize(_selectedImage.size));
    NSLog(@"Star scale: %f", _selectedImage.scale);      
    ...
}

现在无论我使用什么目标操作系统或设备模拟器,NSLog 都会给我:

2015-01-31 16:54:36.709 RatingViewDeveloper[6076:1679432] Star size: {21.5, 20}
2015-01-31 16:54:36.710 RatingViewDeveloper[6076:1679432] Star scale: 2.000000

我的images.xcassets中的文件如下:

  • 名为 DeselectedStar 的 ImageSet 包含图像:
    • DeselectedStar.png
    • DeselectedStar@2x.png
    • DeselectedStar@3x.png

对于名为 SelectedStar 的 ImageSet 也是如此。

它返回的尺寸始终是标准尺寸图像的尺寸,而不是 2x 甚至 3x 版本,我不明白为什么,比例毕竟是 2.0。我尝试再次清洁和构建,但结果总是糟糕的 1x 图像。

最佳答案

图像的高度和宽度始终为1x,2x会自动调整,分辨率会增加一倍但高度和宽度不会改变。

将一些其他图像重命名并设置为 DeselectedStar@2x.png,您就会明白我在说什么。

关于ios - UIImage imageNamed : always returns image at 1x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253551/

相关文章:

ios - 事件指示器不显示

ios - 录制时实时上传音频片段?

iphone - 用于 Objective C iPhone 的 XMLStreamReader?

ios - 在 Objective-C 项目中找不到 Swift 类

objective-c - react 性 cocoa 。返回类型 'UIImage *' 必须与之前的返回类型 'void *' 匹配

ios - 更改 URL 最后一个组件名称并向重命名的组件添加扩展名

ios - 在我的 ViewController 类中访问函数内部的 Swift 字典变量时出现问题

iphone - UIImage 未在 View 上加载但已在 iOS 中加载

iphone - 如何使用 Quartz 2D 向 UIImage 或 UIImageView 添加阴影?

ios - Swift 2.2 - 按 6X6 小图像拆分 UIImage