【发布时间】:2013-07-30 23:32:23
【问题描述】:
如果有人能说明如何使用 iOS 7 中引入的 UITableViewController 的 topLayoutGuide 和 bottomLayoutGuide 属性,我将不胜感激。谢谢。
【问题讨论】:
标签: uitableview ios7
如果有人能说明如何使用 iOS 7 中引入的 UITableViewController 的 topLayoutGuide 和 bottomLayoutGuide 属性,我将不胜感激。谢谢。
【问题讨论】:
标签: uitableview ios7
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 指的是内容的最低垂直范围。
【讨论】: