我目前正在开发一个示例应用程序,我根据自己的视觉实体将白色品牌交付给多个实体。
由于iOS7以及UIStatusBar与UINavigationBar的合并,我必须管理很多大小的图像:视网膜为@ 2x,iOS7为64小时(高度为64像素),经典之一为。
我想支持iOS 5,6& 7。
每次我想为特定实体发送到photoshop并调整7(甚至8,这里缺少@ 2x for iPad)图像时,这是非常痛苦的。 至少对于Icon图像来说,它很容易,因为无论目标操作系统或设备如何,它都是正方形。
用较少的图像资源打包它们会更有效率吗?
我目前正在使用以下代码在所有应用中设置导航栏图像:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar-64h.png"] forBarMetrics:UIBarMetricsDefault];
else
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
答案 0 :(得分:1)
您可以使用-[UIImage resizableImageWithCapInsets:]
或Xcode 5图像切片器提供两个图像(常规和视网膜)。
例如:
UIEdgeInsets insets = UIEdgeInsetsMake(1, 1, 1, 1); // represents a 1 point (2 pixel retina) border of your background color around your logo.
UIImage *navBackgroundImage = [UIImage imageNamed:@"background"];
navBackgroundImage = [navBackgroundImage resizableImageWithCapInsets:insets];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
insets
应指示图像中不可拉伸的区域。
如果您想要更好地控制徽标的位置,请将背景颜色边框设置为大于1磅,然后调整insets
以匹配。
如果需要,您可以提供insets
的不同值,具体取决于您的设备。
此代码相当于xcassets
文件中的Xcode 5图像切片编辑器,该编辑器向后兼容iOS 5 according to this post。