在缩放按钮时保持按钮距离彼此成比例

Keeping buttons distance proportional to each other while scaling buttons

我有 2 个按钮。 1 号和 2 号。无论设备屏幕尺寸如何,我都希望它们彼此保持一定比例的距离。类似于图1

因为按钮彼此成对角线,所以自动布局不允许我将约束设置到最近的按钮(至少据我所知)。 比如我不能设置button 2的constraints到button 1,它只给出了根据view设置constraints的选项。

我已经将按钮设置为像现在一样缩放,但按钮并没有像我想要的那样自行调整比例。当设置为较小的设备时,按钮彼此远离(图 2)。当设置为更大的设备时,按钮会重叠(图 3)。

我曾尝试对前导和顶部约束使用乘数功能,但它似乎没有任何效果。

谢谢

图一

图2

图3

将您的第二个视图的水平中心和垂直中心限制在第一个视图的水平中心和垂直中心,您在此处设置的常量无关紧要,但我建议将其设置为您期望的视图 spaced 以使其看起来像在你的情节提要中正确。在视图控制器中为这两个约束创建一个出口。在控制器的 viewDidLayoutSubviews() 中,将每个约束的 constant 更新为其匹配轴(x = 宽度,y = 高度)。

@IBOutlet weak var secondViewCenterXConstraint: NSLayoutConstraint!
@IBOutlet weak var secondViewCenterYConstraint: NSLayoutConstraint!

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    secondViewCenterXConstraint.constant = secondView.frame.size.width
    secondViewCenterYConstraint.constant = secondView.frame.size.height
}

您会在我的屏幕截图中看到,第二个视图的左上角与第一个视图的右下角匹配。如果你想让它们 space 更类似于你在屏幕截图中的内容,那么你可以使用如下所示的内容。我只是对计算进行猜测,您必须根据要完成的间距来编辑它们。但是您为这些常量所做的所有计算都应该基于视图宽度和高度的某种乘数。

secondViewCenterXConstraint.constant = secondView.frame.size.width * 0.9
secondViewCenterYConstraint.constant = secondView.frame.size.height * 0.5

我创建了一个 repo 来更好地展示我的示例。