明天再整理,睡觉!

从iOS7开始,苹果默认App都是全屏App,意思就是:所有视图控制器的根view都以屏幕的左上角为该view的frame原点开始展示。

在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。有时会加上顶部tool bar的高度 20, 20+44 = 64

ios默认viewController的View会延伸到最顶端,即使上面有导航条、状态栏,可以设置edgesForExtendedLayout属性

edgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。

因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。

这时候用到导航栏时,往往会出现该view被导航栏挡住情况。

最明显的是用到UITableView时,第一行单元格的数据会被UINavigationBar遮挡。

ios7,为了达到全屏效果的app,官方增加了几个属性:

1 @property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
2  @property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0.
3  @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
属性edgesForExtendedLayout,意思是:边缘向四周延伸edgesForExtendedLayout 值是结构体。默认值是UIRectEdgeAll,也就是上、下、左、右都延伸直到填充满整个屏幕
self.edgesForExtendedLayout = UIRectEdgeNone;// 1. UIRectEdgeNone:不要往四周边缘延伸 (即按照iOS7之前的传统来展示) ,设置完这一句,压入桟的控制器frame的y值就是从导航条下边缘开始。
时间: 2024-10-12 14:21:27

明天再整理,睡觉!的相关文章

再整理:Visual Studio Code(vscode)下的通用C语言环境搭建

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/czlhxm/p/11794743.html 参考博客:整理:Visual Studio Code (vscode) 配置C.C++环境/编写运行C.C++(主要Windows.简要Linux) 主要流程: 1.vscode的下载与简单配置 2.MinGw的下载与安装 3.配置系统环境变量 4.修改vscode调试配置文件 5.vscod

Session 知识点再整理(一)基本概念和原理

Session 的概念 Session 和 Cookie 一样,也是针对 HTTP 的局限性而提出的一种保持客户端和服务器端会话连接状态的机制. Session 被称为会话,指用户在进入网站到浏览器关闭(或退出网站)这段时间内与 Web 系统的会话过程. Session 的存储  Session 保存在服务器端,默认情况以文件的形式保存在服务器硬盘上,每个 Session 一个文件,文件名如:sess_j64kv3np0ft2u00aun0cilqdo2,里面保存的内容结构是:变量名 | 类型:

JDK JRE先保存 后面再整理

1. 定义 JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者.如果你仅下载并安装了JRE,那么你的系统只能运行Java程 序.JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库.它包括Java虚拟机.Java平台核心类和支持文件.它不包含开发工具(编译器.调试器等). JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是

今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。

javascript 数据类型 typeof (直接量/变量)-------判断数据类型 简单数据类型(栈,空间小,速度快) string字符串 用引号引起来的文本 number数字 所有数字 NaN 当运算发生错误时会显示 IsNaN 判断数据是不是非数字 true false boolean布尔 表示一个数据是否是正确的 true false undefined 未定义的变量 定义但没赋值的变量 null在栈中开辟一块空间 复杂数据类型(变量名在栈,内容在堆,通过地址连接) object对象

排序算法 先放这里 下次再整理

var num: array of Integer; // 打比方 array里记录的是[5, 3, 2, 4, 1] =>要的到的结果为[1, 2, 3, 4, 5] i: Integer = 1; // i记录要比较数的位置 {首先明白字符串,比如'12345' 要得到1那么就是s[1], 取5那么就是s[5] , 取数组跟取字符串一样 那么就需要取出每位数字比较} {$R *.fmx} procedure TForm2.Button1Click(Sender: TObject); var

JS基础知识再整理..........不断更新中

1.JS的五种基本数据类型:字符串.数值.布尔.null.underfined. 2.在JS中,字符串.数值.布尔三种数据类型,有其属性和方法: 3.字符串的三种常用方法[.indexof()..substring()..split()]和一种常用属性[.length]; 例子如下: /*提取字符串中列表的每一项*/ var aa="This is a list:red,blue,white,black."; var start=aa.indexOf(":"); /

JavaScript HTML DOM---遗漏知识再整理

1.  HTML DOM 改变 HTML 内容:(HTML DOM 允许 JavaScript 改变 HTML 元素的内容.) (1)改变 HTML 输出流 在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容. 绝对不要在文档加载完成之后使用 document.write().这会覆盖该文档. <!DOCTYPE html> <html> <body> <script> document.write(Date

[C++]访问控制与继承(public,protect,private) 有时间再整理!!!

http://www.cnblogs.com/chio/archive/2007/06/11/779408.html http://www.cnblogs.com/SelaSelah/archive/2012/08/12/2634256.html http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html http://bbs.csdn.net/topics/380193036 http://www.cnblogs.c

失败的实验哈哈(今天查查资料研究研究明天再尝试一次)

添加一条路由