当 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. WebDriver: Getting it to play nicely with Xvfb

    http://www.markhneedham.com/blog/2011/12/15/webdriver-getting-it-to-play-nicely-with-xvfb/ Thoughts ...

  2. Android NDK STL

    相信Android开发者都喜欢用C++编写一些高效的应用,有关Android NDK的C++开发相关知识总结如下:       从Android NDK r5开始支持了STL Port,在这个版本开始 ...

  3. hihocoder 1163 博弈游戏·Nim游戏

    1163 : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的 ...

  4. JAVA问问

    一.java中的类和方法 java是面向对象的 类就可以看做一个对象 属性是这个对象拥有什么 方法是这个对象可以做什么 Eg: 类:Person 属性:eyes mouth 方法:eat 解释: Pe ...

  5. JavaScript高级程序设计(第三版)学习笔记20、21、23章

    第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...

  6. hadoop的mapreduce过程

    http://www.cnblogs.com/sharpxiajun/p/3151395.html 下面我从逻辑实体的角度讲解mapreduce运行机制,这些按照时间顺序包括:输入分片(input s ...

  7. Java 简单算法--打印乘法口诀(只使用一次循环)

    package cn.magicdu.algorithm; /** * 九九乘法口诀表 * * @author xiaoduc * */ public class NineNineMulitTable ...

  8. SQL访问EXCEL错误集合

    --行集函数 --1, OPENDATASOURCE 环境:WIN7,SQL 2014,OFFICE 2013 SELECT * FROM OPENDATASOURCE('Microsoft.ACE. ...

  9. .NET 4 新建 webform 项目编译不通过

    .NET 4 新建 webform 项目编译不通过,可能需要做如下改动. 一.根据编译错误,删除 packages.config 中相关包 二.安装包install-package Microsoft ...

  10. 测试中的几个case

    一.页面上对引起 大量数据提交的 按钮/链接 点击一次后,  disable 需求: 对于重要的表单.数量庞大/响应慢的系统,在做提交时, 又有页面还在loading状态, 此时连续做两次点击, 经常 ...