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

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. Web services 安全 - HTTP Basic Authentication

    根据 RFC2617 的规定,HTTP 有两种标准的认证方式,即,BASIC 和 DIGEST.HTTP Basic Authentication 是指客户端必须使用用户名和密码在一个指定的域 (Re ...

  2. HDU4550+贪心

    /* 贪心 先挑出最小的Mm,然后在Mm左侧的按情况考虑,右侧的按顺序排列. */ #include<stdio.h> #include<string.h> #include& ...

  3. redis实现有序的消息队列

    redis是什么东西就不多说了,网上文章一搜一大堆. 首先来说一下我要实现的功能: 类似一个消息中转站吧,如果有人要发送消息,先将消息发到我这里来,然后我这边进行转发,为的就是有一个统一的管理和修改时 ...

  4. 流行趋势:25款很酷的长阴影效果 LOGO 设计

    长阴影其实就是扩展了对象的投影,感觉是一种光线照射下的影子,通常采用角度为 45 度的投影,给对象添加了一份立体感.长阴影(Long Shadow)概念来自于最新非常流行的扁平化设计(Flat Des ...

  5. LeetCode-96. Unique Binary Search Trees

    Description: Given n, how many structurally unique BST's (binary search trees) that store values 1.. ...

  6. 一个python爬虫小程序

    起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...

  7. [Bootstrap]7天深入Bootstrap(2)整体架构

    大多数Bootstrap的使用者都认为Bootstrap只提供了CSS组件 和JavaScript插件,其实CSS组件和JavaScript插件只是Bootstrap框架的表现形式而已,它们都是构建在 ...

  8. sprint5.0

    团队成员完成自己认领的任务. 燃尽图:理解.设计并画出本次Sprint的燃尽图的理想线.参考图6. 每日立会更新任务板上任务完成情况.燃尽图的实际线,分析项目进度是否在正轨.每天的例会结束后的都为任务 ...

  9. Use the PDFs below or the HTML contents to the left to install and configure P6 EPPM and its additional components.

    Welcome to Your Documentation   Use the PDFs below or the HTML contents to the left to install and c ...

  10. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...