-- 2012-03-23
让你的应用支持新iPad的Retina显示屏
一、应用图片标准iOS控件里的图片资源,苹果已经做了相应的升级,我们需要操心的是应用自己的图片资源。就像当初为了支持iPhone 4而制作的@2x高分辨率版本(译者:以下简称高分)图片一样,我们要为iPad应用中的图片制作对应的高分版本。我知道不少开发者很有预见性的早在iOS 5.0 SDK上就完成了这一步升级。可是我还是要强调一点,那就是之前 Michael Jurewitz ( @Jury )在推上提到过的:
— 如果想让你的高分图片显示在新iPad上,你必须用Xcode 4.3.1 连同iOS 5.1 SDK编译!
二、应用图标
接下来肯定就是为应用主图标制作高分版本了,因为低分版的图标在新iPad桌面上看起来会惨不忍睹。为了支持更多的iOS设备、更高分辨率的屏幕,iOS开发者需要为自己的应用准备各种尺寸的主程序图标文件,而且这个文件列表貌似会越来越长越来越长……(译者:叹气~)。详情请参考最新的苹果开发者文档 iOS App Programming Guide 和 iOS Human Interface Guidelines 。从官方文档中,我找出来针对新iPad的Retina显示屏我们需要准备的东西:
iPad主应用图标 (144×144像素):之前用在iPad 1、2代上的是72×72 像素。现在我们需要额外的@2x版本(144×144 像素)。
iPad搜索结果图标 (100×100像素):这个图标出现在系统搜索结果中(译者注:还有在系统设置中,如果应用支持的话)。之前版本用的是50×50像素,现在@2x版本需要100×100像素。
文件命名和Info.plist文件:
根据你的应用需要支持的iOS最低版本不同,你可能需要在Info.plist文件中指定图标文件名,或者是按照苹果的规范命名不同版本的主图标文件。最悲催的情况恐怕就是,你搞的是一个即可跑在iPhone也可跑在iPad上的通用应用(universal app),并且你打算支持iOS 3.1.x甚至更早的版本(译者:其实现在iOS 4.0及以上版本的设备普及率已经很高了,完全没有必要支持古董级的版本,咱又不是Android)。因为iOS 3.2之前是不支持在Info.plist文件里面指定图标文件的,所以你得使用苹果指定的规范去命名图标文件。一个完整的列表差不多就是下面这个样子:
● Icon.png – 57×57 iPhone应用图标
● Icon@2x.png – 114×114 iPhone Retina显示屏应用图标
● Icon-72.png – 72×72 iPad应用图标
● Icon-72@2x.png - 144×144 iPad Retina显示屏应用图标
● Icon-Small.png – 29×29 iPhone 系统设置和搜索结果图标
● Icon-Small@2x.png – 58×58 iPhone Retina显示屏 系统设置和搜索结果图标
● Icon-Small-50.png – 50×50 iPad 系统设置和搜索结果图标
● Icon-Small-50@2x.png – 100×100 iPad Retina显示屏 系统设置和搜索结果图标
如果你的应用仅兼容iOS 3.2及之后的版本,那么你可以在Info.plist文件里面指定图标文件,你不用遵守上面的命名规范,当然你非要那么命名也没有问题(译者:为了便于和美工沟通和日后项目资源的管理,还是建议遵循这套规范)。在iOS 3.2中,苹果在Info.plist文件中引入了CFBundleIconFiles键,在此其中你可以直接指定应用图标的各种版本。如果你忽略了.png的后缀名,那么你也可以忽略高分版本图片的@2x部分,系统会自动匹配。
苹果在iOS 5.0中为了支持报刊杂志(Newsstand)功能,再次引入了一个新的键 CFBundleIcons,这让事情变得更加复杂起来(译者:再次叹气~)。这个键下含有子键CFBundlePrimaryIcon,里面的CFBundleIconFiles子键保存着在此之前保存在Info.plist根节点CFBundleIconFiles键里面的内容。如果你的应用仅支持iOS 5.0及之后版本,那么用一个 CFBundleIcons键就可以,否则的话你还需要同时保留CFBundleIconFiles键和相关内容。
(译者:这里原文讲述稍微有点偏差,未提到CFBundlePrimaryIcon,而且比较混乱,令人费解。其实在Xcode里面以默认方式打开Info.plist看到的会是Icon Files和Icon Files(iOS 5)两组键)
总之,为了做到向后兼容,这个环节会给开发者带来一点小混乱,相当容易犯错。所以,建议开发者针对不同的设备、屏幕组合多做测试。
三、应用商店截屏图片
苹果近期对应用提交做出了规则调整,如若是iPhone、iPod touch应用,必须提交Retina显示屏高分版本的应用屏幕截图。具体图片尺寸要求如下 (前面的尺寸是含系统状态栏情况下的截图):
- 横屏: 960×640 或 960×600
- 竖屏: 640×960 或 640×920
目前苹果尚未对iPad应用提交也做出类似要求,但是为了让你的应用截图在新iPad上看起来呼之欲出,现在是时候考虑使用高分版本截图了。对应的截图尺寸如下 (前面的尺寸是含有状态栏情况下的截图):
- 横屏: 2048×1536 或 2048×1496像素
- 竖屏: 1536×2048 或 1536×2008像素
译者注:原文评论中有人做了补充的,运行时的载入画面,针对新iPad屏幕也需要准备,文件命名和尺寸要求:
- 横屏: Default-Landscape@2x~ipad.png (2048×1496像素)
- 竖屏: Default-Portrait@2x~ipad.png (1536×2008像素)
-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
ICON 设置 官网文档:http://developer.apple.com/library/ios/#qa/qa1686/_index.html
iPhone、iPad通用的设置
图片大小 (px) | 文件名 | 用途 | 重要程度 |
512x512 | iTunesArtwork | iTunes 商店中展示 在iTunes中获取iTunesArtwork图片 | 可以没有,推荐有 如果没有,在ituens中就不能显示图标,如图:
未知风格,是因为 Ad Hoc版本,就是测试版, 没有正式发布到App Store 上 |
57x57 | Icon.png | iPhone/iPod touch上的App Store以及Home界面 | 这个真得有 |
114x114 | Icon@2x.png | iPhone 4(高分辨率)Home 界面 [App Icons 设置中的Retina Display] | 可以没有,推荐有 |
72x72 | Icon-72.png | 兼容iPad的Home界面 [App Icons 设置中的第一个图片] | 可以没有,推荐有 |
29x29 | Icon-Small.png | Spotlight搜索以及设置界面 | 可以没有,推荐有 |
50x50 | Icon-Small-50.png | 兼容iPad的Spotlight搜索 | 如果有设置束,最好有 |
58x58 | Icon-Small@2x.png | iPhone 4(高分辨率)的Spotlight搜索和设置界面 | 如果有设置束,最好有 |
320x480 Default.png iPhone4 Launch Images
640*960 Default@2x.png iPhone4 Launch Images
768x1024 Default-Portrait~ipad.png iPad Launch Images
1024x768 Default-Landscape~ipad.png iPad Launch Images
Default-Landscape~ipad.png专为iPad的应用程序
图片大小 (px) | 文件名 | 用途 | 重要程度 |
512x512 | iTunesArtwork | iTunes 商店中展示 | 可以没有,推荐有 |
72x72 | Icon-72.png | App Store以及iPad上的Home界面 | 这个真得有 |
29x29 | Icon-Small.png | iPad上的设置界面 | 如果有设置束,最好有 |
50x50 | Icon-Small-50.png | 兼容iPad的Spotlight搜索 | 可以没有,推荐有 |
现在不提供iPhone4的必须图标Icon@2x.png,将通不过App Store的审核,所以,现在Icon@2x.png也是必须的了。
iPhone tab bar Item image
Standard display
30x30 .PNG, 24-bit with transparency (but use only 1 color). Worst case size ~350 bytes. 标准的设置 tabicon.png
Retina display
60x60 .PNG, 24-bit with transparency (but use only 1 color). Worst case size ~2000 bytes. tabicon@2x.png
延长Default.png显示的时间
在delegate.m加入线程延迟
-(Bool)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
[NSThread sleepForTimeInterval:10];
.............
}
应用的Default.png图片显示的时间 和 机器加载应用的速度成正比,加载越快,显示的时间越短,加载越慢,显示的时间越长,
感觉快的话,可以用上面方法延长它的显示时间
iOS设备现在有三种不同的分辨率:
iPhone 320x480,
iPhone 4 640x960,
iPad 768x1024。
以前程序的启动画面(图片)只要准备一个Default.png就可以了,但是现在变得复杂多了。
如果一个程序,既支持iPhone又支持iPad,那么它需要包含下面几个图片:
Default-Portrait.png iPad专用竖向启动画面 768x1024或者768x1004
Default-Landscape.png iPad专用横向启动画面 1024x768或者1024x748
Default-PortraitUpsideDown.png iPad专用竖向启动画面(Home按钮在屏幕上面),可省略 768x1024或者768x1004
Default-LandscapeLeft.png iPad专用横向启动画面,可省略 1024x768或者1024x748
Default-LandscapeRight.png iPad专用横向启动画面,可省略 1024x768或者1024x748
Default.png iPhone默认启动图片,320x480或者320x460
Default@2x.png iPhone4启动图片640x960或者640x920
为了在iPad上使用上述的启动画面,你还需要在info.plist中加入
key: UISupportedInterfaceOrientations。
同时,加入值
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight。
添加一张和Default.png一样的图片,对这个图片进行动画,从而实现Default动画的渐变消失的效果。
操作:
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中添加如下代码:
// Make this interesting.
UIImageView *splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)];
splashView.image = [UIImage imageNamed:@"Default.png"];
[self.window addSubview:splashView];
[self.window bringSubviewToFront:splashView];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView: self.window cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
splashView.alpha = 0.0;
splashView.frame = CGRectMake(-60, -85, 440, 635);
[UIView commitAnimations];
就ok了
Sizes of iPhone UI Elements
Points vs. Pixels
Element Size (in points) Window (including status bar) 320 x 480 pts Status Bar
(How to hide the status bar)20 pts View inside window
(visible status bar)320 x 460 Navigation Bar 44 pts Nav Bar Image /
Toolbar Imageup to 20 x 20 pts (transparent PNG) Tab Bar 49 pts Tab Bar Icon up to 30 x 30 pts (transparent PNGs) Text Field 31 pts Height of a view inside
a navigation bar416 pts Height of a view inside
a tab bar411 pts Height of a view inside
a navbar and a tab bar367 pts Portrait Keyboard height 216 pts Landscape Keyboard height 140 pts
The iPhone 4 introduced a high resolution display with twice the pixels of previous iPhones. However you don't have to modify your code to support high-res displays; the coordinate system goes by points rather than pixels, and the dimensions in points of the screen and all UI elements remain the same.
iOS 4 supports high resolution displays (like the iPhone 4 display) via the scale property on UIScreen, UIView, UIImage, and CALayer classes. If the object is displaying high-res content, its scale property is set to 2.0. Otherwise it defaults to 1.0.
All you need to do to support high-res displays is to provide @2x versions of the images in your project. See the checklist for updating to iOS4 or Apple documentation for Supporting High Resolution Screens for more info.
Adjusting Sizes
Click here to see how to adjust View Frames and Bounds.
Additional References
- Apple Documentation: Points vs. Pixels
- Apple Documentation: UIBarButtonItem Class Reference says "Typically, the size of a toolbar and navigation bar image is 20 x 20 points."
- Apple Documentation: UITabBarItem Class Reference says "The size of an tab bar image is typically 30 x 30 points."
// ----------------------------------------------------------------------------------------------------
圆角半径
iTunes Artwork icon ───────────────────────── 512px (90px)
App icon(iPhone4) ────────────────────────── 114px (20px)
App icon(iPad) ───────────────────────────── 72px (12px)
App icon(iPhone 3G/3GS) ───────────────────── 57px(10px)
Spotlight/Settings icon icon(iPhone4) ───────────── 58px (10px)
Spotlight/Settings icon icon(iPhone 3G/3GS/iPad) ──── 29px (9px)
=====================================================================
Designing an app for iPhone, iPad or iPhone4 Here's a couple of things to keep in mind:
iPhone & iPod Touch (1st, 2nd & 3rd Generation)
Portrait: 320 x 480 px, 320 x 480 point
Landscape: 480 x 320 px, 480 x 320 point
Status Bar: 20px, 20point
DPI: 163dpi
Color Mode: 8bit RGB
Color Temperature: Warm
Application icon: 57 x 57 px, 57 x 57 point
Appstore icon: 512 x 512 px, 512 x 512 point
Spotlight search icon: 29 x 29px, 29 x 29 point
Document icon: 22 x 29 px, 22 x 29 point
Webclip icon: 57 x 57 px, 57 x 57 point
Toolbar icon: 20 x 20 px, 20 x 20 point
Tab bar icon: 30 x 30 px, 30 x 30 point
Launch image: see above portrait/landscape
iPhone4
Portrait: 640 x 960 px, 320 x 480 point
Landscape: 960 x 640 px, 480 x 320 point
Status Bar: 40px, 20point
DPI: 326dpi
Color Mode: 8bit RGB
Color Temperature: Cool
Application icon: 114 x 114 px, 57 x 57 point
Appstore icon: 512 x 512 px, 512 x 512 point
Spotlight search icon: 58 x 58 px, 29 x 29 point
Document icon: 44 x 58 px, 22 x 29 point
Webclip icon: 114 x 114 px, 57 x 57 point
Toolbar icon: 40 x 40 px, 20 x 20 point
Tab bar icon: 60 x 60 px, 30 x 30 point
Launch image: see above portrait/landscape
Notes: effectively pixel-doubled previous generations, bare in mind the screen is the same size and concessions will have to be made e.g. keeping assets the same *physical size but doubling their effective resolution. see below.*
iPad
Portrait: 768 x 1024px, 768 x 1024point
Landscape: 1024 x 768px, 1024 x 768point
Status Bar: 20px, 20point
DPI: 132dpi
Color Mode: 8bit RGB
Color Temperature: Warm
Application icon: 72 x 72 px, 72 x 72 point
Appstore icon: 512 x 512 px, 512 x 512 point
Spotlight search icon (results): 50 x 50 px, 50 x 50 point
Spotlight search icon (settings): 29 x 29 px, 29 x 29 point
Document icon: 64 x 64 px, 64 x 64 point
Webclip icon: 72 x 72 px, 72 x 72 point
Toolbar icon: 20 x 20 px, 20 x 20 point
Tab bar icon: 30 x 30 px, 30 x 30 point
Launch image: see above portrait/landscape
Notes: many apps include a rounded mask at the corners of the screen/split view - its part of the default view of many apps by the OS. The radius of the rounded corner of these are 6px onto a black background and are optional.
Icon size radii (via Toxinide):
29x29px, border-radius: 5px
50x50px, border-radius: 9px
57x57px, border-radius: 10px
58x58px, border-radius: 10px
72x72px, border-radius: 12px
114x114px, border-radius: 20px
512x512px, border-radius: 90px