当 automaticallyAdjustsScrollViewInsets 为 YES 时,也是默认行为,表现就比较正常了,和

edgesForExtendedLayout = UIRectEdgeNone 有啥区别? 不注意可能很难觉察

设计师可能一眼就看穿。。。 automaticallyAdjustsScrollViewInsets 为YES 时,

tableView 上下滑动时,是可以穿过导航栏&状态栏的,在他们下面有淡淡的浅浅红色

UIViewController提供了如下属性来调整视图控制器的外观:

1.edgesForExtendedLayout:这个属性属于UIExtendedEdge类型,它可以单独指定矩形的四条边,也可以单独指定、指定全部、全部不指定。

使用edgesForExtendedLayout指定视图的哪条边需要扩展,不用理会操作栏的透明度。这个属性的默认值是UIRectEdgeAll。

2.extendedLayoutIncludesOpaqueBars:

如果你使用了不透明的操作栏,设置edgesForExtendedLayout的时候也请将 extendedLayoutIncludesOpaqueBars的值设置为No(默认值是YES)。

3.automaticallyAdjustsScrollViewInsets:如果你不想让scroll view的内容自动调整,将这个属性设为NO(默认值YES)。

extendedLayoutIncludesOpaqueBars

首先看下官方解释,默认 NO, 但是Bar 的默认属性是 透明的。。。也就是说只有在不透明下才有用

但是,测试结果很软肋,基本区别不大。。。但是对于解决一些Bug 是还是起作用的SearchBar的跳动问题

通常是这几个方法一起使用 来解决iOS7 导航栏透明的问题

1 self.edgesForExtendedLayout = UIRectEdgeNone;

2 self.extendedLayoutIncludesOpaqueBars = NO;

3 self.modalPresentationCapturesStatusBarAppearance = NO;

SearchBar的跳动问题

问题详情:

首先是TableView 作为 NavigationController 的 RootViewContrller, 然后UISearchBar

     添加到TableView 的 headView 上,同时 UISearchDisplayController 的 contentsController

为tableView, SearchBar 为tableView headview 上的 searhBar,然后点击后 searchBar 会平滑

移动到 NavgationBar 的位置,点击取消或蒙版的,searhBar 会跳动下再回到正确的位置。

解决办法:

在控制器的viewdidload: 中加入

[self setAutomaticallyAdjustsScrollViewInsets:YES];

[self setExtendedLayoutIncludesOpaqueBars:YES];

查找原因过程:

首先是看到 FontAwesome 的搜索没有问题然后就看其实现,没有改变UINavigationBar的默认颜色,

   没有UINavigationItem,然后就将其全部注释,然后问题依然, 再 设置UINavigationBar 的 translucent 属性

为YES,接着打开 UINavigationBar 的背景色,然后问题又出现了,由于背景色要同时设置状态栏的颜色,所以设置代码为

[[UINavigationBar appearance]setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

同时不使用 图片的方式,通过遍历系统子控件设UINavigationBar 的设置背景色同样也会导致跳动,

问题就可能是系统SDK的问题了,猜测而已。。然后就各种关键词搜。。最后。。。

导航栏 & 状态栏覆盖的更多相关文章

  1. Android 4.4 沉浸式透明状态栏与导航栏

    Android 系统自4.2 開始 UI 上就没多大改变,4.4 也仅仅是添加了透明状态栏与导航栏的功能,如图 那么如今我就来给大家解说下怎样使用这个新特性,让你的 app 尾随潮流,当然假设你不在乎 ...

  2. 兼容 Android 4.4 透明状态栏与导航栏

    http://www.apkbus.com/Android-163388-1-1.html?_dsign=73d41229 android 系统自4.2 开始 UI 上就没多大改变,4.4 也只是增加 ...

  3. ios 获取导航栏和状态栏高度,针对iPhoneX

    因为iPhoneX的产生,原本的导航栏再也不是44了,那么会出现什么问题呢?在隐藏导航栏的页面,原本的高度要向上调整一个导航栏+状态栏的高度.那么iPhoneX的导航栏高度不是44了,我们需要手动获取 ...

  4. uni-app动态修改顶部导航栏标题

    动态修改顶部导航栏标题有两种方法方式一.使用自定义到导航栏,覆盖原生导航栏 缺点:自定义到导航栏性能远远不如原生导航栏,手机顶部状态栏区域会被页面内容覆盖,这是因为窗体是沉浸式的原因,即全屏可写内容: ...

  5. Nuxt内导航栏的两种实现方式

    方式一 | 通过嵌套路由实现 在pages页面根据nuxt的路由规则,建立页面 1. 创建文件目录及文件 根据规则,如果要创建子路由,子路由的文件夹名字,必须和父路由名字相同 所以,我们的文件夹也为i ...

  6. android -------- 沉浸式状态栏和沉浸式导航栏(ImmersionBar)

    android 4.4以上沉浸式状态栏和沉浸式导航栏管理,包括状态栏字体颜色,适用于Activity.Fragment.DialogFragment.Dialog,并且适配刘海屏,适配软键盘弹出等问题 ...

  7. Android状态栏和导航栏

    1.隐藏状态栏或导航栏 View decordView = getWindow().getDecorView(); /*SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI ...

  8. 分别用ToolBar和自定义导航栏实现沉浸式状态栏

    一.ToolBar 1.在build.gradle中添加依赖,例如: compile 'com.android.support:appcompat-v7:23.4.0' 2.去掉应用的ActionBa ...

  9. iOS 系统根据导航栏和状态栏自动修改布局

    问题 条件:1.有一个全屏大小的带导航的controller 2.隐藏导航栏,最顶上还会留出状态栏的位置,而不是全屏显示 解决方法 self.automaticallyAdjustsScrollVie ...

随机推荐

  1. C++ (P160—)多继承 二义性 虚基类 “向上转型”

    1 多继承中,必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型 2 一个类的保护成员只能被本类的成员函数或者它的派生类成员函数访问 3 由于c+ ...

  2. PullToRefresh的个性化扩展

    一:实现区别下拉刷新和上拉加载 参考资料:http://blog.csdn.net/losetowin/article/details/18261389 在PullToRefresh的类库的com.h ...

  3. 【C语言】03-printf和scanf函数

    一.printf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据 1.用法 1> pr ...

  4. MySQL索引详解

    导读:大家都知道,一个MySQL数据库能够储存大量的数据,如果要查找那一个数据,就得费好大劲从一大堆的数据中找到,即费时间又费力气,这时,索引的出现就大大减轻了数据库管理员的工作.本文介绍了数据库索引 ...

  5. 冒泡排序小实例 php

    源代码如下,仅用于参考: <?php$a = array(10,2,36,14,10,25,23,85,99,45); for($j=0;$j<9;$j++){ for($i=0;$i&l ...

  6. ASP获取当前页面带参数的网址(URL地址)的方法

    '获取当前Url参数的函数 Function GetUrl() Dim ScriptAddress,Servername,qs ScriptAddress = CStr(Request.ServerV ...

  7. java 网络API访问 web 站点

    package cn.magicdu.think.socket; import java.io.BufferedReader; import java.io.InputStreamReader; im ...

  8. 开启或关闭SQLSERVER服务的bat文件

    界面如下: 因为电脑的SQLSERVER服务没有自己启动,有时候又需要关闭SQLSERVER服务,就自己在网上找了下教程. 源码如下: @echo offchoice /t 3 /c yn /d y ...

  9. [转]从一行代码里面学点JavaScript

    现如今,JavaScript无处不在,因此关于JavaScript的新知识也是层出不穷.JavaScript的特点在于,要学习它的语法入门简简单,但是要精通使用它的方式却是一件不容易的事. 来看看下面 ...

  10. 用python下载辞典

    用python下载词源词典Etymoline Online Etymology Dictionary是最好的 English 词源词典,现在来说没有之一.但是,一直在PC上查单词有时不是很方便,遂就想 ...