Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS自动布局-不可能的情况?_Ios_Autolayout - Fatal编程技术网

iOS自动布局-不可能的情况?

iOS自动布局-不可能的情况?,ios,autolayout,Ios,Autolayout,我需要创建一个具有3个视图的启动屏幕故事板。中间视图的比例必须为4:3,顶视图必须占据剩余空间的30%,下视图必须占据剩余空间 例如,当视图为375 x 667 中间视图:375 x 4/3=500 顶视图(667-500)*30%=50 下视图:667-500-50=117 我尝试了我能想到的一切(包括使用UIStackView),但找不到一种方法使其工作 可能吗?正确的方法是什么 非常感谢 正如您正确地说的那样,使用autolayout很难做到这一点,因为您的第一个视图应该占据30%的空间,

我需要创建一个具有3个视图的启动屏幕故事板。中间视图的比例必须为4:3,顶视图必须占据剩余空间的30%,下视图必须占据剩余空间

例如,当视图为375 x 667

中间视图:375 x 4/3=500

顶视图(667-500)*30%=50

下视图:667-500-50=117

我尝试了我能想到的一切(包括使用UIStackView),但找不到一种方法使其工作

可能吗?正确的方法是什么

非常感谢


正如您正确地说的那样,使用autolayout很难做到这一点,因为您的第一个视图应该占据30%的空间,而不是一块连续的空间。你可以通过添加两个不可见的视图来测量“剩余空间”,一个视图的高度可以占30%,但这不值得费心。只需在
布局子视图
或类似视图中直接在代码中实现您的需求。

您可以通过使用具有适当乘数的等高约束来存档此需求。以下是您案例中的步骤:

  • 根据屏幕大小添加所有3个具有所需大小的视图
  • 将第一个视图的等视图高度约束设置为超级视图,如下所示。 (倍增器是根据您正在处理尺寸为375 x 667的视图来设置的。请根据需要进行更改。)

  • 根据需要将顶部、左侧和右侧约束设置为零
  • 将第二视图的等视图高度约束设置为超级视图,如下所示

  • 向第二视图和底部视图添加其他缺少的约束

完成了。

为了获得剩余空间的高度,我在顶部添加了一个隐藏视图,该视图的比例为4:3,在下面添加了另一个隐藏视图,该视图占据了剩余空间。然后,我可以使用相对于第二个隐藏视图的高度约束来布局视图

不幸的是,这是一个启动屏幕故事板,所以我不能编码它。看来我需要试试看不见的东西。谢谢不幸的是,俯视图应该是剩余高度的30%(总高度-4:3视图高度)。不是总高度的30%。感谢