gpt4 book ai didi

ios - AutoLayout:何时使用 BottomLayoutGuide 与 "V:[continueButton(50)]|"

转载 作者:行者123 更新时间:2023-11-29 01:09:15 26 4
gpt4 key购买 nike

我在 UIPageViewController 中有一个 UIViewController,我想在最底部添加一个按钮。

我只是不明白这两者的区别

NSLayoutConstraint.constraintsWithVisualFormat("V:[button]|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["button":button]) // works

NSLayoutConstraint.constraintsWithVisualFormat("V:[button][bottomLayoutGuide]", options: .DirectionLeadingToTrailing, metrics: nil, views: ["button":button, "bottomLayoutGuide":bottomLayoutGuide]) // doesn't work

第一行在最底部添加按钮,第二行在按钮和底部之间有一个 50px 的填充。这是否与 UIPageViewController(它本身位于 UINavigationController 中)有关?

最佳答案

底部布局指南对于父 Controller 具有某种覆盖当前 View Controller 内容的 View 的布局很有用。所以在你的情况下 UIPageViewController有这样一个 View ,就是一个UIPageControl您可能不希望重叠 View ,因此如果您指定底部布局指南作为边界,您的 View 将固定在 UIPageControl 的正上方.这很方便,尤其是当您依赖于这样的约束时(这在我下面提供的示例中变得很清楚)。

A UITabBarController还有一个底部布局指南,即标签栏的顶部。这很方便,因为大多数时候您需要对选项卡栏的顶部进行约束,否则 View 将位于其下方(这可能会导致不良的用户体验[思考:如果您将 tableView 限制在最底部(<强>不是底部布局指南)那么最后一个单元格可能会被标签栏覆盖,这肯定是糟糕的用户体验])。因此,正如您所看到的,有时能够限制 View Controller 的底部布局指南是很有用的,其中父 Controller 的元素占据的空间可能不一定适合放置 View 。

UINavigationController 也是如此,如果您有一个 View Controller 包含在 UINavigationController 中, topLayoutGuide基本上会指示UINavigationController的位置导航栏结束,因此将任何 View 限制到顶部布局指南将很有用,否则 View 将最终位于导航栏下方。

就你而言,我认为你可以将你的观点限制在 UIPageController 的最底部。的 View 作为 UIPageControl 下面的 View 通常包含看起来不会被 UIPageControl 混淆的图像(页面控件更多地充当视觉反馈机制而不是交互元素)。

正如马特在他的评论中指出的那样,做了类似V:[button]|的事情,您基本上将 View 限制在其 super View 的最底部,而不是底部布局指南(在您的情况下是 UIPageControl )。

相反,V:[button][bottomLayoutGuide]会将 View 限制为 UIPageControllerUIPageControl ,其默认大小可能为 50,这就是两者之间存在差异的原因。

我希望事情已经说清楚了。

关于ios - AutoLayout:何时使用 BottomLayoutGuide 与 "V:[continueButton(50)]|",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com