gpt4 book ai didi

iOS:在状态栏顶部动画启动画面

转载 作者:行者123 更新时间:2023-11-28 22:41:52 25 4
gpt4 key购买 nike

好的,我明白了在应用程序启动后立即添加 UIImageView 的概念,并对其进行动画处理以伪造启动动画。但是,状态栏会干扰。

我需要一个 UIImageView 在所有内容之上,包括状态栏,当它消失时,应用程序会显示状态栏。因此,将状态栏设置为最初隐藏,然后将其设置为动画不是一个可行的选择。

最佳答案

您需要的是第二个 UIWindow,其 windowLevelUIWindowLevelStatusBar 或更高。您将在应用程序委托(delegate)中创建两个 UIWindow 对象,一个具有常规 View 层次结构,另一个具有图像,并为第二个设置动画以淡出(或者您需要设置动画)。两个窗口都应该可见,启动窗口位于顶部。

这种方法很复杂,因为您可能会遇到旋转问题,具体取决于您的常规 View 层次结构。我们已经在我们的软件中做到了这一点,并且运行良好。


编辑:

自适应解决方案(窗口方法,非常简单):

UIImageView* splashView = [[UIImageView alloc] initWithImage:[UIImage imageWithBaseName:@"Default"]];
[splashView sizeToFit];

UIViewController* tmpVC = [UIViewController new];
[tmpVC.view setFrame:splashView.bounds];
[tmpVC.view addSubview:splashView];

// just by instantiating a UIWindow, it is automatically added to the app.
UIWindow *keyWin = [UIApplication sharedApplication].keyWindow;
UIWindow *hudWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0.0f, -20.0f, keyWin.frame.size.width, keyWin.frame.size.height)];

[hudWindow setBackgroundColor:[UIColor clearColor]];
[hudWindow setRootViewController:tmpVC];
[hudWindow setAlpha: 1.0];
[hudWindow setWindowLevel:UIWindowLevelStatusBar+1];
[hudWindow setHidden:NO];

_hudWin = hudWindow;

[UIView animateWithDuration:2.3f animations:^{
[_hudWin setAlpha:0.f];
} completion:^(BOOL finished) {
[_hudWin removeFromSuperview];
_hudWin = nil;
}];

最后,归功于 this guy


一个更简单的方法是在隐藏状态栏的情况下启动你的应用程序,将你想要动画的 View 放在 View 层次结构的顶部,并在动画完成后,使用 显示状态栏[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]

关于iOS:在状态栏顶部动画启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com