---恢复内容开始---

1. 前言

UITabBar,UINavigationBar非常的好用,但是毕竟是系统自带的,不受自己完全掌握,对于布局和隐藏会有一些问题,现在就来谈谈我的想法和一些问题。

2. view,UITabBar,UINavigationBar之间的关系

1. 如果是在storyboard下,通过segue的连线实现跳转,那么navigationBar会自动出现在屏幕里,很好做自动布局。

2. 如果通过代码或者别的不连线的方式实现跳转,那么需要注意的就是做自动布局时,如果设定和view的上下边界距离,等到运行时,实际上是和navigationBar和tabBar的上下边界距离。

3. 整个view的高度是固定的,只和手机的型号有关。如果没有navigationBar和tabBar, 那么中间的内容高度就会相应地增加。

3. UITabBar的隐藏问题

我想很多人都遇到过UITabBar的隐藏问题,最容易的方法一般是下面两种

UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@""];
[vc setHidesBottomBarWhenPushed:YES]; //隐藏tabbar
[self.navigationController pushViewController:vc animated:YES];
self.hidesBottomBarWhenPushed = YES;
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@""];
[self.navigationController pushViewController:vc animated:YES];
self.hidesBottomBarWhenPushed = NO;

这两种方法我都试了,确实能够隐藏tabBar,大部分情况下都没问题。

不过我遇到了一个比较奇葩的隐藏问题,就是tabBar会有留白。追本溯源,这就和前面view和tabBar的关系有关了。

我的问题:

tabBar高度49px,页面跳转到一个聊天页面,最下面的聊天框也是49px。

聊天框上面就是UITableView实现的聊天界面,设定UITableView到View的bottom间距为49px。

但是实际运行时,系统会认为是UITableView到TabBar的间距为49px,这就会出现下面的问题:

即使设定了UITabBar隐藏,但是系统运行时还是会出现留白,不过一闪而过就没了。如果设定到view的bottom间距为0px,留白没有了,但是聊天框占据了49px,聊天的最后一行拉不到,很奇葩的问题。

原因:我的感觉就是即使UITabBar隐藏了,系统到运行的时候,聊天页面都viewDidAppear时,还是认为49px的间距是到已经隐藏的UITabBar上的。

4. 解决方法

最后的解决方法是,设置间距为0px,等到viewDidAppear时设置间距为49px

-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
self.bottomSpace.constant = ; //解决了留白问题
}

UITabBar,UINavigationBar的布局和隐藏问题的更多相关文章

  1. Android中include标签的使用(打开引用布局,隐藏当前布局)

    在开发app的时候,有时候一个布局会反复用到,可以把反复用到的布局单独写一个xml文件,什么时候用到就用includ标签引入xml 下面是我写的反复用到的一个xml,里面有2个button,一个Tex ...

  2. Sagit.Framework For IOS 开发框架入门教程3:Start引导页及框架布局和隐藏事件的内幕

    前言: 框架依旧在快速更新着:在重构.简化代码,统一标准的过程中. 中间也遇到各种坑,不过好在一步一脚印的解决了. 虽然还有些功能还在思考,不过教程,还是得补上: 上篇文章:Sagit.Framewo ...

  3. 滑动listview隐藏和显示顶部布局

    需求: 1.listview向下滑动时,隐藏顶部布局 2.listview向上滑动到最上面,显示顶部布局 3.顶部布局的隐藏和显示有过渡效果 4.第一次加载listview时,顶部不要隐藏 布局: 注 ...

  4. ListView实现下拉刷新(二)隐藏头布局

    一.问题分析 在上一篇中,我们将头布局加到了ListView上.但是没有隐藏他.你可能会想,隐藏还不简单,直接给它设置为GONE属性不就可以了吗,在需要的时候再设定为可见.没错,这正是ListView ...

  5. Rails :布局和视图渲染

    原文地址: http://guides.ruby-china.org/layouts_and_rendering.html Rails 布局和视图渲染 本文介绍 Action Controller 和 ...

  6. Sagit.Framework For IOS 开发框架入门教程4:注册页布局-被消灭的变量

    前言: 上篇写完:Sagit.Framework For IOS 开发框架入门教程3:Start引导页-框架布局和隐藏事件的内幕 之后,好久没写文章了,有IT连创业系列.有DotNetCore的一篇文 ...

  7. Android CoordinatorLayout实现多列表切换并和头布局联动;

    注意:不是双列表联动,是多列表和头布局联动: 大概就是和饿了么店铺首页类似的布局框架吧,头布局显示时,列表RecyclerView或ScrollView和头布局一起滚动,头布局完全隐藏后列表再去滚动, ...

  8. CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析

    说明 opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见. opacity.visibility.display 这三个属性 ...

  9. 使用css3的Flex布局实现列表展示

    实现效果图如下: 通过css3样式实现(部分代码): .box { display: flex; flex-wrap:wrap; justify-content:space-between; alig ...

随机推荐

  1. 再说 c++11 内存模型

    可见性与乱序 在说到内存模型相关的东西时,我们常常会说到两个名词:乱序与可见性,且两者经常交错着使用,容易给人错觉仿佛是两个不同的东西,其实不是这样,他们只是从不同的角度来描述一个事情,本质是相同的. ...

  2. php随机密码函数的实例代码

    php随机密码函数的入门例子 时间:2015-12-16 20:42:48来源:网络 导读:php生成随机密码的函数实例,php生成随机密码的函数,生成数字.大小写字母与特殊字符组合的随机密码.   ...

  3. Visual Studio与Eclipse与IntelliJ快捷键对比

  4. 开发BI系统时的需求分析研究

    我们知道MIS,知道ERP,知道GIS等等,这些系统在管理限制上有很多的冲突,管理和被管理,开放和限制等等,然而BI在开始就不是这样的.BI要求的就是易用还要易于扩展,首先是报表,这个是你无条件的需要 ...

  5. Reveal查看任意app的高级技巧(转)

    原文:http://zhuanlan.zhihu.com/iOSRe/19646016 Reveal查看任意app的高级技巧 hangcom · 12 小时前 Reveal是一个很强大的UI分析工具, ...

  6. NGUI 修改Shader支持灰色滤镜

    之前有人做过,不过效率不高: http://blog.csdn.net/onerain88/article/details/12197277  他的代码: fixed4 frag (v2f i) : ...

  7. js中加密及设置cookie

    1.设置cookie及有效期时长 //cname:cookie的名称,cvalue:cookie的内容,exdays:cookie有效期时长: function setCookie(cname, cv ...

  8. DDD:谈谈数据模型、领域模型、视图模型和命令模型

    背景 一个类型可以充当多个角色,这个角色可以是显式的(实现了某个接口或基类),也可以是隐式的(承担的具体职责和上下文决定),本文就讨论四个角色:数据模型.领域模型.视图模型和命令模型. 四个角色 数据 ...

  9. intellij 调试方法

    intellij 调试方法 转自 http://www.th7.cn/Program/net/201410/296492.shtml

  10. [New Portal]Windows Azure Virtual Machine (10) 自定义Windows Azure Virtual Machine模板

    <Windows Azure Platform 系列文章目录> 通过之前的文章,我相信大家对微软Windows Azure Virtual Machine有一定的了解了. 虽然微软提供了非 ...