AutoLayout正确定位按钮
Posted
技术标签:
【中文标题】AutoLayout正确定位按钮【英文标题】:AutoLayout correct positioning of button 【发布时间】:2015-07-12 17:45:26 【问题描述】:我有一个带有UIButton
的视图。我添加了两个约束:
16 的领先空间 顶部空间到 265 的顶部布局
根据我查看的设备,按钮位于不同的位置。我能让它保持一致的唯一方法就是将它居中。因此,我一直在通过设置垂直和水平距离从居中的子视图构建视图。
我知道这些限制是实际的数值,并且不同的 ios 设备有不同的屏幕尺寸。如何设置它,使按钮出现在相同的位置,相对于每个设备的屏幕尺寸?例如,如果我有一个按钮位于屏幕下方四分之一处,如何确保该按钮在所有设备上显示在屏幕下方四分之一处?
我觉得可以写一整本书来介绍如何设置带有自动约束的屏幕。
【问题讨论】:
你到底想把按钮放在哪里?用简单的英语准确描述您希望按钮如何对齐。或许还可以添加屏幕截图,说明它在不同设备上的显示方式、错误原因以及原因。 我为按钮设置了以下约束: 前导空间到超级视图等于 16 顶部空间到顶部布局 = 265 这取决于设备以不同的方式定位按钮。理想情况下,我希望按钮位于屏幕下方 1/4 的位置,无论显示在哪个设备上。 【参考方案1】:没有代码的解决方案可能是:
将按钮放在 UIView 中。使用等高约束将该视图的高度设置为等于控制器的高度。将该约束的乘数设置为 3/4。还要向视图添加前导、尾随和底部约束。现在将您的标签放在视图中,并使用前导、尾随、顶部和底部约束将其固定在视图中。完毕。如果您的目标是 iOS 9,请使用 LayoutGuide 而不是 UIView。
可以使用代码完成更合适的解决方案:在控制器中创建按钮顶部约束的 IBOutlet。将 ViewDidLoad: 方法中该 IBOutlet 的常量更改为 self.view.frame.height / 4。
【讨论】:
我看不出额外的 UIView 有什么必要。 底部约束和高度约束不会冲突? 您必须正确设置约束。 Scott 的问题并不清楚确切他希望如何设置他的视图或确切问题是什么。我对此发表了评论。 他想让他的按钮位于控制器视图的四分之一处。这很简单也很常见。我的解决方案正确设置了它的约束。我不明白你的真正意思。实际上,就个人而言,我更喜欢第二种解决方案。但是第一个可行,不值得被否决,除非您提出一个更好的解决方案而无需代码。 他的问题不清楚。你认为他希望它下降四分之一。他在评论按钮是距屏幕顶部特定数量的像素时开始了他的问题。他提供了一个例子。这个问题根本不清楚。您使用self.view.frame.height / 4
的示例可能不适用于在 iOS 9 中显示两个应用程序的 iPad,是吗?以上是关于AutoLayout正确定位按钮的主要内容,如果未能解决你的问题,请参考以下文章
iOS Autolayout - 在半透明导航栏下方正确定位视图
ios autolayout 如何正确编写nslayoutconstriant?
如何设置 UILabel 以通过 AutoLayout 包装 UIButton?