UIImage imageNamed:总是 returns 图像在 1x
UIImage imageNamed: always returns image at 1x
这是我的代码:
- (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);
...
}
现在无论我使用什么目标 OS 或设备模拟器,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 也是如此。
它returns的尺寸一直是标准尺寸图片的尺寸,从来没有2x甚至3x版本,我不明白为什么,比例毕竟是2.0。我尝试再次清洁和构建,但结果总是糟糕的 1x 图像。
图像的高度和宽度始终为1x,2x会自动调整,分辨率会增加一倍但高度和宽度不会改变。
将一些其他图像重命名并设置为 DeselectedStar@2x.png,您就会明白我在说什么。
这是我的代码:
- (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);
...
}
现在无论我使用什么目标 OS 或设备模拟器,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 也是如此。
它returns的尺寸一直是标准尺寸图片的尺寸,从来没有2x甚至3x版本,我不明白为什么,比例毕竟是2.0。我尝试再次清洁和构建,但结果总是糟糕的 1x 图像。
图像的高度和宽度始终为1x,2x会自动调整,分辨率会增加一倍但高度和宽度不会改变。
将一些其他图像重命名并设置为 DeselectedStar@2x.png,您就会明白我在说什么。