13

这是我需要的一个场景。

我在 IB(大小 iPhone4 英寸)上放置了一个 UIButton,其 IB 上的初始帧为x:100,y:100,w:100,h:100。我希望原点和高度应根据设备大小而变化。例如 iPhone6 的宽度和高度是 375X667,因此宽度因子(375/320=1.1718)和高度因子(667/568=1.1742)。在这个场景中,我想用乘以宽度因子 (1.1718) 来改变我的按钮原点 X 和宽度,用乘以高度因子 (1.1782)来改变原点 Y 和高度。在这种情况下,我的按钮应该显示在x:100X1.1718, y:100X1.1742, w:100X1.1718, h:100X1.1742 上

iPhone6+ 也需要同样的东西。

在此处输入图像描述

我可以通过设置 This autoresizing mask 轻松实现这一点。我怎样才能通过使用自动布局来达到同样的效果?我应该遵循什么步骤,我应该应用什么限制?

我之前关于这个的问题

我通过使用自动布局附加了一些我需要的屏幕截图(通过上图所示的自动调整大小蒙版实现)。

我通过使用自动调整大小附加了一些我需要的屏幕截图。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我的尝试:-

步骤 1:- 在 IB 上取一个大小为 100X100 的按钮。设置它的 X=100 和 y=100。 在此处输入图像描述 Step2:- 应用这个约束。 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

5 回答 5

11

作为您的问题之前,您可以将此约束设置为您的 UIButton。


您不需要更改为 UIButton 的高度和宽度设置的约束。


1.)您需要将水平空间设置为Button.LeadingSuperview.Trailing

设置constant=0Priority=1000Multiplier=100:320,如下图所示。

在此处输入图像描述


2.) 您需要将水平空间设置为Button.TopSuperview.Bottom

设置constant=0Priority=1000Multiplier=100:568,如下图所示。

在此处输入图像描述


结果


在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

希望这能解决您的问题。

于 2015-02-26T03:46:10.673 回答
5

使用约束的乘数。因此,设置一个约束,使按钮的宽度等于顶视图的宽度,乘数为 100:320(您可以使用此比率形式来表示乘数)。将约束的常数设置为 0。对与顶视图高度成比例的按钮高度(比率 100:568)执行相同操作。对于按钮的位置,将按钮的前导以 100:320 的比例约束到顶视图的宽度,将按钮的顶部与顶视图的高度以 100:568 的比例约束。

于 2015-02-14T10:22:32.720 回答
4

如果您想完全在情节提要(或 XIB)中执行此操作,则需要使用间隔视图。

首先,在根视图的左上角放一个间隔视图。将其顶部和左侧边缘约束为与父视图的距离为零。将其宽度约束为其父视图宽度为 100:320(并确保约束的第一项是间隔)。将其高度限制为 100:568 到其超级视图高度。这些宽度和高度约束将控制按钮的位置。

现在将按钮的上边缘约束到垫片的底部边缘,并将按钮的左边缘约束到垫片的右边缘。在按钮和超级视图之间创建比例宽度和高度约束。

将间隔视图设置为隐藏。隐藏的视图不可见且不接收触摸,但仍参与布局。

…如果您想在代码中执行此操作,只需使用自动调整大小掩码并设置translatesAutoresizingMaskIntoConstraintsYES.

于 2015-02-21T07:52:26.450 回答
3

对于高度和宽度,在 Interface Builder 中创建一个“纵横比”约束,将按钮链接到超级视图。纵横比没有属性;它将使用创建时的值来设置乘数(如果 iPhone <= 5 宽度并将 superview 链接到按钮宽度,它将是 320:100)。添加第二个纵横比约束,将按钮高度链接到超级视图高度(如果您不希望高度在 iPhone 5 上拉伸,您可以将按钮纵横比链接到自身。)。

对于原点,我认为没有办法将视图的原点和视图的大小联系起来。要根据屏幕大小将原点设置为任意高度或宽度,您确实需要创建一个间隔视图。不优雅,但必要。添加视图并将其设置为隐藏(并在左侧的对象大纲中将其命名,当在 IB 中使用自动布局时,您可能想要做所有事情以使约束可读,但绝对在这里,这样您就可以轻松地再次找到它) . 将创建约束设置为零将其链接到按钮和顶部布局指南,并将零链接到 superview.leading 和按钮前导。

要调整间距,您可以创建纵横比约束,超级视图宽度和超级视图高度,或者将其设置为等于按钮宽度和高度。

于 2015-02-21T21:08:44.097 回答
0

试试这个解决方案

  1. 将视图顶部对齐设置为超级视图 centerY 并设置乘数 84:240
  2. 将视图左对齐设置为超级视图中心 X 并设置乘数 100:160
  3. 使用乘数 100:320 和比例高度 100:568 设置比例宽度

反映上述属性的图像左对齐到superview centerX

将顶部对齐到超级视图中心Y

希望这能解决你的问题

于 2015-02-27T18:07:11.380 回答