iPad:根据方向在 applicationDidFinishLaunching 期间添加全屏图像
Posted
技术标签:
【中文标题】iPad:根据方向在 applicationDidFinishLaunching 期间添加全屏图像【英文标题】:iPad: add fullscreen-image during applicationDidFinishLaunching depending on orientation 【发布时间】:2011-08-24 15:27:38 【问题描述】:我想在启动 iPad 应用程序时制作一个“启动画面”:启动时会显示 Default-[Landscape|Portrait]~ipad.png,之后我想自己添加相同的图像并让它淡出。
问题是 applicationDidFinishLaunching 期间的方向;我有问题要确定纠正图像并将其添加到 UIWindow(似乎是纵向的)。
如何在启动期间添加全屏图像然后让它淡出?
非常感谢!
【问题讨论】:
请注意,如 UI 指南中所述,使用“启动屏幕”被认为是不好的做法,并且 Apple 极力劝阻。您应该显示应用程序最后状态的屏幕截图或最可能状态的图片,以提供加载速度感并减少用户焦虑,然后立即进入“活动模式”。 【参考方案1】:您可以在viewDidLoad
中将flashView
添加到您的RootViewController.view
:
flashView = [...]; // save reference to this object
flashView.alpha = 1.0;
[self.view addSubview:flashView];
在applicationDidFinishLaunching
之后将RootViewController
的viewDidAppear
中的alpha 属性设置为0.0:
NSTimeInterval duration = 1.0;
int curve = UIViewAnimationCurveLinear;
// Setup the animation
[UIView beginAnimations:@"splash fade out" context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:curve];
[UIView setAnimationBeginsFromCurrentState:YES];
// change alpha
flashView.alpha = 0.0;
// Commit the changes
[UIView commitAnimations];
【讨论】:
是的,但是如何在 viewDidLoad 中获取方向?设备和 self.interfaceOrientation 都告诉我我是从横向开始的,这是错误的......【参考方案2】:您在application:didFinishLaunchingWithOptions:
期间的定位问题是预期行为;请参阅 Get launch orientation of iPad app 了解有关此主题的先前问题。
最好的解决方案是让您的根视图控制器处理显示初始屏幕,或者使用带有UIModalTransitionStyleCrossDissolve
的模态视图控制器呈现初始屏幕。这样您就可以对正常的view rotation events 做出反应,并根据需要更改初始屏幕图像。
或者您可能能够读取 UIDevice 的 orientation
属性,但它当然也可能不会更新(即使您从 application:didFinishLaunchingWithOptions:
调用 beginGeneratingDeviceOrientationNotifications
),直到为时已晚。
【讨论】:
但我无法获得正确的方向...它总是告诉我我是纵向的,虽然我是从横向开始的... @swalkner:你读过链接的答案吗? Apple 记录了在application:didFinishLaunchingWithOptions:
期间的方向将是纵向的。在该方法返回后的某个时刻,正常的 UIViewController 旋转机制将用于将您的界面旋转到实际方向。这就是为什么我建议您从 UIViewController 显示初始屏幕并使用正常的视图旋转事件来根据需要调整图像的方向。以上是关于iPad:根据方向在 applicationDidFinishLaunching 期间添加全屏图像的主要内容,如果未能解决你的问题,请参考以下文章