我希望有人能够演示如何使用在iOS 7中引入的UITableViewController的topLayoutGuide和bottomLayoutGuide属性。谢谢。
我希望有人能够演示如何使用在iOS 7中引入的UITableViewController的topLayoutGuide和bottomLayoutGuide属性。谢谢。
topLayoutGuide
和bottomLayoutGuide
属性是从UIViewController继承并实现UILayoutSupport协议的。它们旨在与AutoLayout
一起使用,但也可以直接使用,不需要使用AutoLayout
。
对于topLayoutGuide
,该属性表示您不希望出现在半透明或透明UIKit栏(如状态栏或导航栏)后面的内容的最高垂直范围。因此,如果您的视图控制器已经推入到UINavigationController
堆栈中,topLayoutGuide
将告诉您状态栏和导航栏从屏幕顶部覆盖了多少个点。您可以使用此值滚动UIScrollView
中的内容以刚好低于导航栏,或确保视图中的其他内容未被UINavigationBar
覆盖。
请注意,topLayoutGuide
的值取决于视图控制器和其是否包含在另一个视图控制器中。来自Apple的UIViewController
文档:
约束此属性值的对象取决于视图控制器是否是容器视图控制器(如导航或标签栏控制器)的子级,如下所示:
• 不在容器视图控制器中的视图控制器将该属性约束为指示状态栏底部(如果可见),否则指示视图控制器视图的顶部边缘。
• 在容器视图控制器中的视图控制器不设置此属性的值。相反,容器视图控制器将约束值指示为:
如果导航栏可见,则为导航栏底部
如果只有状态栏可见,则为状态栏底部
如果既没有状态栏也没有导航栏,则为视图控制器视图的顶部边缘
这是一段代码,我用它来响应键盘显示移动UITextField
的位置,将文本字段移动到导航栏正下方。
CGFloat length = self.topLayoutGuide.length;
_feedback.frame = CGRectMake(_feedback.frame.origin.x, length + 5.0, _feedback.frame.size.width, _feedback.frame.size.height);
使用bottomLayoutGuide
与使用topLayoutGuide
完全相同,只是bottomLayoutGuide
是指内容的最低垂直范围。