将自定义 UIView 锚定到相对于屏幕大小的屏幕底部

Posted

技术标签:

【中文标题】将自定义 UIView 锚定到相对于屏幕大小的屏幕底部【英文标题】:Anchor custom UIView to bottom of screen relative to screen size 【发布时间】:2013-11-22 17:45:02 【问题描述】:

我目前正在尝试为 iPhone 创建一个自定义上拉菜单,我可以简单地连接到情节提要编辑器中任意数量的视图控制器,我的代码在动画/IBActions 等方面按预期工作,但是我对于 iPhone 4 英寸外形尺寸(iPhone 5 及更高版本),似乎无法锚定视图。

我尝试了各种限制,但我似乎无法让观点坚持下去。在这一点上,出于纯粹的挫败感,我已经删除了所有约束,因此这两个视图暂时只是单独存在。

下面的截图显示了我的问题:

iPhone 4/4S 视图:

iPhone 5/5C/5S 视图:

如您所见,iPhone 5 视图中突出显示的视图显示了应在屏幕外隐藏的内容。我希望的想法解决方案理想情况下是使用我没有考虑过的 Autolayout 的某种配置,或者在最坏的情况下添加更多代码来定位 UIView。

提前致谢。

【问题讨论】:

【参考方案1】:

您需要使用自动布局来执行此操作。首先,选择视图并尝试固定屏幕底部,然后选择自动布局“固定”按钮,即屏幕截图右下角按钮簇中左起第三个按钮。你应该会看到这个菜单。

这些值可能会有所不同,具体取决于您使用的屏幕大小以及您尝试约束的视图大小,但您需要首先选择顶部约束的下拉菜单。您需要确保选择底部选项以限制到“顶部布局指南”。将此约束添加到视图后,您需要在 Interface Builder“文档大纲”(左侧栏)上扩展约束。选择“垂直空间”约束并导航到“属性检查器”(右侧栏上的第四个图标)。将“关系”下拉菜单从“等于”更改为“小于或等于”。

然后你需要对底部约束做类似的事情,除了这一次,你需要选择倒数第二个选项“视图”(当前距离 = 0)

然后根据需要为边设置约束。您可能只想使用与底部边缘相同的约束类型,当然假设该条将始终为 320pts 宽并在屏幕上水平居中。

【讨论】:

它在两种尺寸的设备上都能按我的意愿工作,这很棒,但现在我有一个警告,说我的视图布局不明确。我可以忽略这一点并继续幸福下去吗?还是我应该尝试解决这个问题? @DarrylBayliss 您应该能够通过添加某种左侧和右侧约束来解决这个问题。如果这解决了问题,请不要忘记标记为正确:)

以上是关于将自定义 UIView 锚定到相对于屏幕大小的屏幕底部的主要内容,如果未能解决你的问题,请参考以下文章

将项目锚定到屏幕中心并带有一些偏移

将 QGraphicsView 锚定到屏幕的角落

SwiftUI - 从锚定到按钮框架的按钮点击动画到屏幕上

如何在滚动时更改 UIView 大小并延迟

如何锚定相对于屏幕 iPhone 一侧的视图

QML改变项目的高度相对于其下方项目的高度变化