首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >隐藏的TabBar有时会在其所在的位置显示黑色视图

隐藏的TabBar有时会在其所在的位置显示黑色视图
EN

Stack Overflow用户
提问于 2018-05-08 11:16:56
回答 3查看 715关注 0票数 0

我的VC有一个tabBarController,当我在tableView中滚动时,我想要根据滚动来隐藏/显示。

我实现了以下方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0{
        //scrolling down
        changeTabBar(hidden: true, animated: true)
    }
    else{
        //scrolling up
        changeTabBar(hidden: false, animated: true)
    }
}

func changeTabBar(hidden:Bool, animated: Bool){
    let tabBar = self.tabBarController?.tabBar
    let offset = (hidden ? UIScreen.main.bounds.size.height : UIScreen.main.bounds.size.height - (tabBar?.frame.size.height)! )
    if offset == tabBar?.frame.origin.y {return}

    self.mainCollectionView.frame.size.height = self.mainCollectionView.frame.size.height + (tabBarController?.tabBar.frame.size.height)!

    let duration:TimeInterval = (animated ? 0.5 : 0.0)
    UIView.animate(withDuration: duration,
                   animations: {tabBar!.frame.origin.y = offset},
                   completion:nil)
}

但我认为这与self.mainCollectionView.frame.size.height = self.mainCollectionView.frame.size.height + (tabBarController?.tabBar.frame.size.height)!有关。在那个函数中调用它。我不确定。有时它确实起作用,有时它是一个黑色的tabBar,它也弄乱了我的滚动。有时我不能再滚动了..但是如果我评论它,它工作得很好

EN

回答 3

Stack Overflow用户

发布于 2018-05-08 11:38:04

我已经创建了以下方法,并且在每种情况下都工作得很好

在XCODE中测试编辑

将其放入UITabbarController的子类中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var isTabBarHidden:Bool = false
func setTabBarHidden(_ tabBarHidden: Bool, animated: Bool,completion:(() -> Void)? = nil) {
    if tabBarHidden == isTabBarHidden   {

        self.view.setNeedsDisplay()
        self.view.layoutIfNeeded()

        //check tab bar is visible and view and window height is same then it should be 49 + window Heigth

        if (tabBarHidden == true && UIScreen.main.bounds.height == self.view.frame.height) {
            let offset = self.tabBar.frame.size.height
            self.view.frame = CGRect(x:0, y:0, width:self.view.frame.width, height:self.view.frame.height + offset)

        }

        if let block = completion {

            block()
        }
        return
    }
    isTabBarHidden = tabBarHidden

    let offset: CGFloat? = tabBarHidden ? self.tabBar.frame.size.height : -self.tabBar.frame.size.height
    UIView.animate(withDuration: animated ? 0.250 : 0.0, delay: 0.1, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.5, options: [.curveEaseIn, .layoutSubviews], animations: {() -> Void in
        self.tabBar.center = CGPoint(x: CGFloat(self.tabBar.center.x), y: CGFloat(self.tabBar.center.y + offset!))

        //Check if View is already at bottom so we don't want to move view more up (it will show black screen on bottom ) Scnario : When  present mail app
        if (Int(offset!) <= 0 && UIScreen.main.bounds.height ==   self.view.frame.height) == false {
            self.view.frame = CGRect(x:0, y:0, width:self.view.frame.width, height:self.view.frame.height + offset!)
        }
        self.view.setNeedsDisplay()
        self.view.layoutIfNeeded()

    }, completion: { _ in
        if let block = completion {
            block()
        }
    })
}

从你的ViewController

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView.panGestureRecognizer.translation(in: scrollView).y < 0{
            //scrolling down
            (self.tabBarController as! YourTabbarControllerClassName).setTabBarHidden(true, animated: true)
        }
        else{
            //scrolling up
            (self.tabBarController as! YourTabbarControllerClassName).setTabBarHidden(false, animated: true)
        }
    }

希望能对大家有所帮助

票数 1
EN

Stack Overflow用户

发布于 2019-08-14 15:14:48

在你的prepare for segue中设置hidesBottomBarWhenPushed it

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    segue.destination.hidesBottomBarWhenPushed = true
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-13 09:49:41

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Mohamed Lee 

**scrollViewWillBeginDragging()** and **scrollViewWillEndDragging()** func to show & hide tableView 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (!decelerate)
    {
        if (isScrollingStart)
        {
            isScrollingStart=NO;
            [self scrollingStopped];
        }
    }
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{

    if (isScrollingStart)
    {
        isScrollingStart=NO;
        [self scrollingStopped];
    }
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    isScrollingStart=YES;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    isScrollingStart=YES;
}
-(void)scrollingStopped
{
    NSLog(@"Scrolling stopped");
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50232299

复制
相关文章
SwiftUI:视图的显示和隐藏动画
SwiftUI最强大的功能之一是能够自定义视图的显示和隐藏方式。以前,您已经了解了如何使用常规if条件有条件地包含视图,这意味着当条件更改时,我们可以从视图层次结构中插入或移除视图。
韦弦zhy
2020/04/16
4.6K0
iOS视图滚动的时候控制导航条标题及公告视图的alpha(显示与隐藏)
应用场景:比如设计给我们的是一张黑色的返回箭头图.我们某个页面需要弄成白色的话.又不想重新设计一下新的图片
公众号iOS逆向
2021/07/29
1.6K0
改变视图的位置和大小
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53068421
用户1451823
2018/09/13
1.2K0
vue中返回顶部封装的组件 滚动一定位置显示隐藏
用两个不同方式写的返回顶部 返回顶部子组件1 <template> <div> <div @click="backtop" class="fh" v-show="isShow">顶部1</div> </div> </template> <script> export default { data() { return { isShow: false, }; }, mounted() { this.listenerFunction();
江一铭
2022/06/16
1.8K0
vue中返回顶部封装的组件 滚动一定位置显示隐藏
[1097]DIV的显示与隐藏
*********************div的显示和隐藏************************************
周小董
2022/04/13
5.2K0
元素的显示与隐藏
在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow。
星辰_大海
2020/09/30
4.4K0
直播带货系统,滚动视图,上滑隐藏,下滑显示
4160088889_d0d1898b26_o.jpg - (void)scrollViewDidScroll:(UIScrollView *)scrollView{     CGFloat offsetY = scrollView.contentOffset.y;     BOOL flag = NO;     if (_offsetY < offsetY) { // 需要隐藏         flag = YES;     }     if (_button.alpha == 1  // 没有隐藏
yunbaokeji柯基
2020/10/15
9650
直播带货系统,滚动视图,上滑隐藏,下滑显示
Three TextureLoader纹理贴图不显示图片(显示黑色)的原因分析
问题在MeshLambertMaterial材质,把它改成MeshBasicMaterial即可显示图片。
Dawnzhang
2022/09/29
3.7K0
UIPickerView显示和隐藏的动画
- (void)ViewAnimation:(UIView*)view willHidden:(BOOL)hidden { [UIView animateWithDuration:0.3 animations:^{ if (hidden) { view.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.wi
用户7705674
2021/10/29
1.9K0
Mac 文件的隐藏与显示
让 Finder 显示隐藏文件和文件夹 基本 显示 $ defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder 隐藏 $ defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder 进阶 创建终端快捷命令 在 zsh shell 下,创建快捷命令 创建显示命令 fd (fileDisplay) $ e
零式的天空
2022/03/24
1.4K0
Android 密码的隐藏和显示
在Android开发中,需要密码的隐藏和显示,下面就和大家分享一下使用方法: xml代码:
网罗开发
2021/01/29
2.2K0
Android 密码的隐藏和显示
动态获取当前屏幕中光标所在位置的颜色
usingSystem;usingSystem.Drawing;usingSystem.C运维
Java架构师必看
2020/10/15
2.8K0
如何实现密码的显示和隐藏?
如图所示,我们在登录账号的时候经常会看到密码的显示和隐藏是可以进行切换的,那么到底怎么实现这个功能呢?
用户7656790
2020/12/14
6.1K0
如何实现密码的显示和隐藏?
如何使用IPinfoga仅根据IP地址查询到你所在的位置
IPinfoga是一款功能强大的OSINT公开资源情报工具,该工具可以导出关于目标IP地址的相关信息,比如说包含国家、城市和经纬度的地理位置信息等等。
知识与交流
2021/09/23
1.7K0
如何使用IPinfoga仅根据IP地址查询到你所在的位置
EditText输入密码的显示和隐藏
密码的显示和隐藏是一个很常见的小知识点,主要包括2个部分:小图标的变化和EditText输入密码的显示和隐藏
AntDream
2019/07/15
2.5K0
对不起,你所在的位置不支持地图图表,怎么办?
很多小伙伴问这个问题:Excel 中不能做地图了,怎么办? 对不起,你所在的位置不支持地图图表,怎么办? 如果你正在制作地图,你会遇到两个问题: 以及: 至于这是什么原因,我们不得而知。 直观上的意思是:你所在的位置不支持你用 Excel 中的默认地图图表。 轻量级小工具解决 在多年前的一个自制小工具送给你使用: 其实大家只是想做个地图而已,如下: 完成。
BI佐罗
2022/04/02
7.6K1
对不起,你所在的位置不支持地图图表,怎么办?
UI篇-UITabBar及其相关其他知识
和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换。
進无尽
2018/09/12
2K0
UI篇-UITabBar及其相关其他知识
Qt-改变tabBar位置并改变文字方向
QTabWidget默认tab页标题(tabBar)在上面,但是有时候我们需要改变它的位置,比如做一个设置页面,想将它放到左边显示,这个比较简单,只需要设置一个属性即可实现:tabPosition:west,但是我们发现它文字的方向是没有改变的,这样完全没有使用体验,所以我们需要改变文字的方向。
kdyonly
2023/03/03
3.3K0
Qt-改变tabBar位置并改变文字方向
点击加载更多

相似问题

隐藏TabBar时设置视图中的工具栏位置

32

ActionBar TabBar上的黑色

32

隐藏/显示UITabBarController的.tabBar (用于根视图控制器)

20

显示模式视图有时会隐藏导航栏

43

隐藏TabBar并显示UIToolbar

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文