我正在开发一款专为视网膜显示iPhone制作的壁纸应用程序。我有一个640 x 960像素大小的图像legends.jpg
,我希望在视图中显示,作为预览。这是loadView
中的代码:
- (void)loadView
{
// Init the main view first.
UIView *wallpaperContainerView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIImage *wallpaper = [UIImage imageNamed:@"legends.jpg"];
UIImageView *wallpaperView = [[UIImageView alloc] initWithImage:wallpaper];
[wallpaperContainerView addSubview:wallpaperView];
[self setView:wallpaperContainerView];
}
我的问题是:
感谢下面的建议,我创建了legends.png(非视网膜)和legends@2x.png文件。然后,我将*wallpaper
初始化修改为:
UIImage *wallpaper = [UIImage imageNamed:@"legends"];
完全解决了我的第一个问题。所以显然使用JPG导致这种缩放混乱,而使用PNG一切正常。
答案 0 :(得分:1)
答案 1 :(得分:1)
您应该始终在图像的Retina版本的文件名中使用@ 2x。
顺便说一句,尝试始终使用PNG格式,因为您将来不必费心使用文件扩展名。
例如,如果您有2个文件(正常和带有后缀@ 2x.png的Retina),您可以简单地写一下:
[UIImage imageNamed:@"legends"];
答案 2 :(得分:1)
不要忘记管理高度为568的 Iphone 5屏幕。
这可以很方便:
#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f &&
[UIScreen mainScreen].scale == 2.f &&
UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
和
- (void)viewDidLoad
{
[super viewDidLoad];
if(IS_PHONEPOD5())
{
self.imageView.image = [UIImage imageNamed:@"image-568h@2x"];
}
else
{
self.imageView.image = [UIImage imageNamed:@"image"];
}
}