如果有人可以显示如何使用iOS 7中引入的UITableViewController的topLayoutGuide和bottomLayoutGuide属性,我将不胜感激。

最佳答案

topLayoutGuidebottomLayoutGuide属性是从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指的是内容的最低垂直范围。

关于uitableview - topLayoutGuide和bottomLayoutGuide UIViewController属性的示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17959224/

10-13 09:19