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

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. 获取ACCESS数据库中自增变量的值

    /// <summary> /// 获取自增变量值 /// </summary> /// <returns>自增变量值</returns> public ...

  2. free命令查看内存使用情况(转载)

    linux free命令查看内存使用情况 时间:2016-01-05 06:47:22来源:网络 导读:linux free命令查看内存使用情况,free命令输出结果的各选项的含义,以及free结果中 ...

  3. mysql安装出现error Nr.1045 (转)

    http://www.cnblogs.com/Ivan-j2ee/archive/2012/09/22/2698278.html 我们在windows下安装mysql时会出现Access denied ...

  4. SharePoint 2013中规划企业搜索体系结构

    摘要:了解如何规划小型.中型或大型企业搜索体系结构. 设置企业搜索体系结构之前,需要仔细规划很多事项.我们将逐步帮助您规划小型.中型或大型企业搜索体系结构. 您是否熟悉 SharePoint 2013 ...

  5. Origami – 用于 Quartz 的免费的交互设计框架

    Origami 是一个为 Quartz Composer 开发的免费的工具包——由Facebook设计团队创建,让交互设计原型更加简单,不需要编程. 如今,大多数设计师通过创建静态原型来表达要实现的应 ...

  6. MVC,如何在视图中声明方法,调用方法?

    <div> <!--在视图中申明方法,此方法的类型已经固定为HelperResult--> @helper ShowHello(string s) { <div> ...

  7. 微软开源资源 NET Foundation Projects

    网络基础设施.在管理项目(管理工作)的网络基础.目前主要包括网络平台上编译通过.(“罗斯林”)以及项目的ASP.NET的家庭,都是开放的微软开放的技术来源,Inc.(MS开放技术).Xamarin贡献 ...

  8. .net C# 对虚拟目录IIS的操作

    一.查看虚拟目录是否存在 private bool IsExitesVirtualDir(string virtualdirname) {    bool exited =false;    Dire ...

  9. Mysql主从备份和SQL语句的备份

    MySQL服务器的主从配置,本来是一件很简单的事情,无奈不是从零开始,总是在别人已经安装好的mysql服务器之上 ,这就会牵扯到,mysql的版本,启动文件,等一些问题. http://www.cnb ...

  10. 【循序渐进学Python】1. Python基础知识

    1. Python安装和配置 首先需要到Python的官方网站(http://www.python.org/getit/) 下载安装包,现在Python的发行版分为兼容之前Python程序的Pytho ...