当你在UIStoreBoard中进行快速布局时,你可能会发现有时,Xcode为你创建的上边距约束是Top Space to:Superview,而有时候Xcode为你创建的却是Top space to:Top Layout Guide,那么,这两者到底有什么区别呢?
第一种:Top Space to:Superview
第二种:Top space to:Top Layout Guide
【假 设】在UIStoryBoard中放人一个UIViewController,放一个UITableView在这个UIViewController中并为这个UITableView设置上边距
【情况1】 不使用NavigationController(用UIView做一个假的NavigationBar)
建议使用第一种约束并自己计算状态栏和CustomNavigationBar的高度:”Top Space to:Superview - Equals:64“,如果使用第二种方式:自动计算的top边距要使用要使用44:“Top space to: Top Layout Guide - Equals 44”
【情况2】 使用NavigationController,并使用系统NavigationBar
建议使用第二种约束:”Top space to: Top Layout Guide “,这里默认是使用0,不用考虑状态栏和NavigationBar的高度;如果使用第一种方式:自动计算的top边距要使用要使用44:“Top Space to:Superview - Equals:64”
【总结】第二中方式带有自动计算状态栏和导航控制器的高度的功能,如果你为某View是top设置了Top space to:Top Layout Guide,在没有NavigationBar的时候,该View是紧贴页面顶部的,在使用了NavigationBar,该View会自动居于NavigationBar的底部,而第一种方式完全需要自己去计算top距离,不带有任何的自动计算和调整的功能。
【建议】如果系统的NavigationBar无法满足你的需求时,你将会使用自定义的假CustomNavigationBar(UIView),此时请使用第一种方式建立约束,如果你使用的是系统的NavitionBar,请使用第二种方式建立约束。