gpt4 book ai didi

ios - 为什么隐藏状态栏会完全破坏我的简单动画?

转载 作者:行者123 更新时间:2023-11-29 03:25:01 25 4
gpt4 key购买 nike

示例项目: http://cl.ly/0O2t051o081p

我想实现一个滑出侧边栏,如 this question 中所述。状态栏也会移动的位置。我已经让一切正常工作并且侧边栏滑动,但是一旦我尝试隐藏状态栏以完成“幻觉”,它就会阻止任何事情发生,并且侧边栏不再滑出。

这是我的代码:

- (void)viewDidAppear:(BOOL)animated {
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.PostsView addSubview:[[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO]];

hide = YES;
[self setNeedsStatusBarAppearanceUpdate];

[UIView animateWithDuration:1.0 animations:^{
CGRect postsFrame = self.PostsView.frame;
postsFrame.origin.x = self.MenuView.frame.size.width;

self.PostsView.frame = postsFrame;
}];
});
}

我的代码基本上由一个包含 View Controller 组成,该 View Controller 包含在 Storyboard中内置的两个 subview Controller (主视图 Controller 和侧边栏 View Controller )。

我还尝试将 plist 中的 View 基于 Controller 的状态栏外观 设置为 NO 并调用 [[UIApplication sharedApplication] setStatusBarHidden] 但在损坏的地方会出现完全相同的结果。

我做错了什么?

最佳答案

我不确定为什么该行会中断动画,但如果我按照您在上一段中所说的操作,但在动画之前向 View 添加了一个layoutIfNeeded(我确实设置了基于 View Controller 的状态栏),它就可以正常工作在 info.plist 中显示为 NO)。

- (void)viewDidAppear:(BOOL)animated {
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.PostsView addSubview:[[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO]];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self.view layoutIfNeeded];
hide = YES;
[UIView animateWithDuration:1.0 animations:^{
CGRect postsFrame = self.PostsView.frame;
postsFrame.origin.x = self.MenuView.frame.size.width;

self.PostsView.frame = postsFrame;
}];
});
}

也没有必要实现 prefersStatusBarHidden。

关于ios - 为什么隐藏状态栏会完全破坏我的简单动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551749/

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