我有一个小的矩形视图,从我的应用程序的顶部动画。我需要它在屏幕的最顶部并在状态栏上向下动画,但动画视图出现在状态栏下。任何人都知道如何通过状态栏获取它?
这是我目前正在做的事情
[self.navigationController.view addSubview:self.headerView];
它完美地运行并且处于正确的位置除了状态栏下面的事实。有什么想法吗?
编辑:我知道这是可能的,因为Snapchat会这样做。
答案 0 :(得分:1)
您可以做的一个选项是,当您为自己的headerView设置动画时,
通过这种方式,您可以获得漂亮的动画,看起来就像在状态栏上做的那样。
编辑:我将尝试用伪代码解释
// 1. take snapshot of the status bar
UIView* snapshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
// 2. hide statusbar
_statusBarHidden = YES;
[self setNeedsStatusBarAppearanceUpdate];
// you need to set "View controller-based status bar appearance" option to yes on plist
- (BOOL)prefersStatusBarHidden
{
return _statusBarHidden;
}
// 3. add subview of snapshot view on the statusbar position
CGRect frame = self.view.frame;
frame.height = [[UIApplication sharedApplication] statusBarFrame].size.height;
[self.view addSubView:snapshotView];
// 4. do the header view animation over snapshot view
.. Just do the animation you already were doing
// 5. remove snapshot view and show statusbar again.
[snapshotView removeFromSuperview];
_statusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];