zoukankan      html  css  js  c++  java
  • 作死遇到的坑--view向下偏移

    好大一个坑。--谈谈view偏移问题:

    先上张图,

    图中白色部分。上面的是从网上找的资源。将导航栏隐藏之后用collectionView加上去而实现的滑动标签功能。开始以为是代码中的问题。然后仔细推敲了一遍别人代码中的相关模块。发现过了一天并没有找到解决的地方。我一直以为是哪儿设置的属性。例如frame什么的。今天早上来了之后。有钻研了下。发现了几个没有看到过的属性。可疑。的确可疑。

    然后改了之后发现问题解决了。

    先提出这两个属性吧。

    sele.edgesForExtendedLayout 属性

    self.automaticallyAdjustsScrollViewInsets 属性 

    在IOS7以后viewController开始使用全屏布局的,而且是默认的行为通常涉及到布局就离不开这个属性edgesForExtendedlayout,   它是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,也就是说,如果即使视图中有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。因为一般为了不让tableview不延伸到navigationBar下面,属性设置为UIRectEdgeNone。

    那么此时发现导航栏变灰了,这样设置: self.navigationController,navigationbar.translucent = No;

    *NavigationBar的translucent属性:看下官方API文档。

    翻译过来大致是 :translucent默认属性是yes,如果navigationBar有自定义的背景图,那么当属性置为Yes,且放了一张不透明的图,那么效果是自动会把这个图弄成半透明;

    如果设置为No,放了一半透明的图:

    如果barstyle是UIBarStyleBlack,效果是半透明的图自动加上黑色背景。

    如果是UIBarStyleDefault,效果是半透明的图自动加上白色背景。

    如果设置了barTintColor,效果是半透明的图自动加上barTintColor的背景。

    IOS7 viewController新增属性automaticallyAdjustsScrollViewInsets,即是否根据按所在界面的navigationBar与tabbar的高度,自动调整scrollview的inset。

    即UITableView顶部有一个空白区域。

  • 相关阅读:
    Xcode7.x中安装Alcatraz
    iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)
    ios开发:一个音乐播放器的设计与实现
    iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)
    iOS开发:XCTest单元测试(附上一个单例的测试代码)
    设计模式之构造者模式
    控制流程
    变量与常量定义
    go语言内置基础类型
    解决Win10 Virtualbox5.2.18桥接不能联网小记
  • 原文地址:https://www.cnblogs.com/wmx-rj/p/4876870.html
Copyright © 2011-2022 走看看