如何轻松制作iPhone启动图像?

16
根据苹果的指南,iPhone应用程序的启动图/闪屏应该是一个预渲染静态图像,看起来类似于应用程序的第一个屏幕。以下是关于此的苹果文档链接:
1)启动图像,iOS人机界面指南:

https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW5

2) 应用程序启动(默认)图片,iOS应用程序编程指南:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW12

我想知道如何轻松创建这样的启动图像。在大多数情况下,启动图像似乎应该是空状态栏+导航栏+空表/视图+标签栏的组合,它们中的每一个都应该使用iOS预定义的颜色方案进行渲染。

但是我找不到任何关于我应该如何做到这一点的文档,也找不到Xcode中与此相关的任何入口。苹果有没有官方工具可以轻松渲染启动图像?还是说所有的应用程序开发者只是使用一些模拟iPhone控件+Photoshop来完成这个任务?

感谢您的帮助。

9个回答

14

如果你想要制作一个静态的 XIB 文件用于主屏幕(空选项卡栏,空导航栏)等等,并不会太麻烦。只需要在这些背景中不放置任何元素或标签。

你可以在 iPhone 模拟器中启动这个 "空" 应用程序,该模拟器具有内置的截图功能。通过像 iPhone Simulator Cropper 这样的附加软件,你可以将图像裁剪到所需的大小。

这就是我的方法。


1
我最终得到了类似的解决方案,但我正在使用Xcode 4.2的故事板,因此有一些不同。请参见下面我的答案。感谢提供iPhone模拟器裁剪工具的链接,我以前从未知道有这样的工具。 - nybon
这是我的工作内容。我在我的工作区中专门为此项目创建了一个文件夹,并在模拟器中启动每个设备和方向所需的XCAssets文件。有一个需要注意的地方,似乎是Xcode 7新加入的,就是在截图(Command S)时需要将模拟器窗口缩放到100%(Command 1),以获得正确的图像尺寸。 - Dan Loughney

7

由于我觉得在nib文件中删除内容很麻烦,所以我采用了编码方法。

每个项目的代码都不同,但您会理解的。

// uncomment to take a screenshot for the launch image
//#define SCREENSHOTMODE 

- (void)viewDidLoad {
    [super viewDidLoad];
    /* regular stuff */
#ifdef SCREENSHOTMODE
        self.navigationItem.leftBarButtonItem = nil;
        self.navigationItem.rightBarButtonItem = nil;
        self.title = nil;
        [self deactivateContentForSubviewsInView:self.view];
#endif
}


#ifdef SCREENSHOTMODE
- (void)deactivateContentForSubviewsInView:(UIView *)contentView {
    for (UIView *aView in contentView.subviews) {
        if ([aView isKindOfClass:[UILabel class]]) {
            [(UILabel *)aView setText:nil];
        }
        else if ([aView isKindOfClass:[UITableView class]]) {
            [(UITableView *)aView setDataSource:nil];
        }
        else if ([aView isKindOfClass:[UIToolbar class]]) {
            [(UIToolbar *)aView setItems:nil];
        }
        else if ([aView isKindOfClass:[UIImageView class]]) {
            [(UIImageView *)aView setImage:nil];
        }
        else if ([aView isKindOfClass:[UIView class]]) {
            // i often put views in UIViews to group them
            [self deactivateContentForSubviewsInView:aView];
        }
    }
}
#endif

如果您只有少量对象,您可以直接删除UI元素的内容,而无需使用循环。

这是一个非常有趣的想法。以前从未想过。 - nybon

7
似乎在Xcode中没有这样的工具。我最终采用了与Sebastian Wramba上面所说的方法类似的方法,只是有些不同。我使用了Xcode 4.2 storyboard来设计应用程序的UI,以下是在Xcode 4.2 storyboard中执行此操作的步骤:
  1. 从“对象库”中将一个空视图控制器拖到storyboard中
  2. 根据您的初始屏幕布局,向新场景添加空导航栏/表视图/选项卡栏/其他组件
  3. 在storyboard中单击视图控制器,在视图控制器的“属性检查器”中,有一个名为“Initial Scene:Is Initial View Controller”的复选框。勾选它。
  4. 在Xcode中启动应用程序,您的应用程序的初始屏幕将设置为您刚刚创建的屏幕。截取屏幕截图并将其用作启动图像。
  5. 通过选中其“Initial Scene”复选框,将初始场景设置回您的真实初始场景。
由于一般思路相同,只需在Xcode中创建专用UI即可,因此我仍将Sebastian Wramba的解决方案标记为我的问题的答案。

1
您的最佳解决方案 - 启动应用程序,拍摄初始状态的屏幕截图(在设备上同时按下home和power按钮),然后就完成了!您将获得一个漂亮的PNG文件,其中包含所需的苹果颜色方案的初始应用程序状态。

1
但是屏幕截图将与我的应用程序的初始屏幕相同,用户可能认为应用程序已完全加载,但显然它并没有,并且此时无法响应用户的操作。 - nybon
你可以定制一个特殊的应用程序启动界面来实现这个效果 - 例如,确保所有数据元素为空,甚至可以通过IB隐藏一些元素。 - Stavash
如果状态栏存在的话,那就不太好了...需要将其裁剪掉。 - nonopolarity

1

在调试版本中,我会使用#ifdef将数据源屏蔽掉,这样应用程序就会启动为空白状态,然后构建和运行它,并截取空白应用程序的屏幕截图。为了建议用户稍等片刻,我可能会使用Photoshop叠加我的商标图像或一些闪屏标志,部分遮挡最明显的控件。如果这是一个有趣的应用程序,我还可以在应用程序开始运行时将这些标志图标的副本进行动画处理。


0

我设置了以上所有内容。但是在调试时它没有起作用。我从模拟器和iPhone中删除了应用程序,然后立即起作用。


0
比那还要简单。打开你想要设置为手机启动画面的图片。将图片保存到相机胶卷中。在相机胶卷中打开该图片。点击图片以获取全屏视图。截屏。通过电子邮件将该图片发送到你的电脑。将文件结尾从PNG更改为png,我知道这很烦人 :) 将该图片添加到你的启动画面区域。完成!;)

0

您可以使用iOS 8启动屏幕XIB通过模拟器生成静态启动图像,如果您支持iOS 7或更早版本,则可能需要这样做。

  1. 创建一个启动屏幕XIB。
  2. 在Xcode的项目导航器中选择项目本身,然后在常规 > 部署信息下更改主界面字段为您的启动屏幕XIB。此步骤将使启动屏幕XIB保留在模拟器中,以便您有时间在第4步中截取屏幕截图。
  3. 在模拟器中启动应用程序。
  4. 一旦您的启动屏幕出现在模拟器中,请选择文件 > 保存屏幕截图

为每个需要支持的设备重复此过程。您可能需要使用图像编辑器从屏幕截图中删除状态栏。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接