iPhone:如何使用平移手势移动状态栏

时间:2014-08-06 12:47:21

标签: ios objective-c instagram uistatusbar

与Instagram一样 - “探索”标签,当我滚动内容时,状态栏也会移动。

当用户滚动tableView,NavigationBar&时,总是调用 FullScreenScroll ,如here。 TabBar会滚动显示或隐藏在同一时间。

我的问题是,不仅仅是NavigationBar& TabBar,我也想让StatusBar跟随手指移动。

最后,它真的是全屏。

enter image description here

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:12)

这是获得状态栏窗口的最佳解决方案

UIWindow *statusBarWindow = (UIWindow *)[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];

然后更改框架

答案 1 :(得分:9)

我不知道为什么在没有评论或理由的情况下对我的问题进行投票。虽然,我找到了一个实现移动状态栏的解决方案。

感谢我提出的questionanswer,我可以在滚动时改变statusBar的框架:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSArray *windows = [[UIApplication sharedApplication] FEX_windows];
    for (UIWindow *window in windows) {
        if ([window isKindOfClass:NSClassFromString(@"UIStatusBarWindow")]) {
            CGRect frame = window.frame;
            frame.origin.y -= 5;
            window.frame = frame;
        }
    }
}

答案 2 :(得分:0)

您可以通过调用以下方式设置隐藏动画的状态栏:

[[UIApplication sharedApplication] setStatusBarHidden:BOOL withAnimation:UIStatusBarAnimation]

如果您想逐个像素地移动状态栏,则需要采取更具创造性的方法。我相信Instagram的方式是通过拍摄状态栏的图像表示(如状态栏的屏幕截图),隐藏实际状态栏,然后在用户滚动时上下移动图像表示。

答案 3 :(得分:0)

快速:

if let statusBarWindow:UIWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow {
   statusBarWindow.frame.origin.y = -5
}