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