如何在swift

时间:2016-03-09 05:53:25

标签: ios swift

我有一个表视图控制器。当用户向上滚动表格时,我想逐渐隐藏iphone状态栏(包括电池,WIFI等的顶部)。我知道如何通过实现prefersStatusBarHidden()方法来隐藏状态栏。但它不会随着桌面向上滚动而隐藏它。所以我希望它成为桌子的一部分。它应该能够随着桌子移动而移动。

3 个答案:

答案 0 :(得分:2)

最初您获得UItableview的滚动方向,然后根据方向设置为BOOL值

func scrollViewDidScroll(scrollView: UIScrollView) {
   if(scrollView.panGestureRecognizer.translationInView(scrollView.superview).y > 0)
{
    print("up")
   UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .Fade)  //.Slide
}
else
{
    print("down")
    UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .Fade)  //.Slide
}
}
  

UIApplication.sharedApplication()。在iOS9中不推荐使用setStatusBarHidden

<强>选择-2

 crete one global Value for get the current position
var hide:Bool = false

 func scrollViewDidScroll(scrollView: UIScrollView) {
   if(scrollView.panGestureRecognizer.translationInView(scrollView.superview).y > 0)
{
    print("up")
   hide = true

}
else
{
    print("down")
   hide = false

}
  UIView.animateWithDuration(0.5) { () -> Void in
        self.setNeedsStatusBarAppearanceUpdate()
    }
}


override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
    return UIStatusBarAnimation.Slide
}
override func prefersStatusBarHidden() -> Bool {
    return hide
}

答案 1 :(得分:1)

试试这个

func scrollViewDidScroll(scrollView: UIScrollView)
{
    UIApplication.sharedApplication().statusBarHidden = true
}

func scrollViewDidEndDecelerating(scrollView: UIScrollView)
{
    UIApplication.sharedApplication().statusBarHidden = false
}

答案 2 :(得分:1)

无法移动状态栏;它是可见的还是隐藏的。但是,您可以通过使用包含状态栏的屏幕截图的UITableView滚动UIView来替换状态。

我将从UIScrollViewDelegate.开始由于UITableViewDelegateUIScrollViewDelegate,的子类,您可以在视图控制器中将UITableView的委托设置为{ {1}}通过此操作,您现在可以收听滚动动作。

self.位于顶部并且用户向下滚动时,我建议您截取状态栏的屏幕截图,将其添加到UITableView,然后将该视图移至与UIView移动速度相同(请参阅UITableView文档以获取帮助)。同样,当滚动到顶部时,我会让视图向下移动到状态栏的位置,然后删除视图,并将状态栏设置为可见。

使用此方法,您可以使用表格视图显示状态的上下移动。