2015-01-04 30 views
1

所以,这里有一个棘手的问题。我正在研究一款仅适用于iPhone 4s,5/5s/5c和6/6 Plus的仅限肖像应用。不幸的是,为了使用户界面与之前列出的设备完全兼容,我在使用自动布局时遇到了一些麻烦。在复杂视图的界面生成器中使用自动布局

这里的UI应该怎么样子(这是我使用为其他屏幕尺寸的基准的iPhone 6加)截图:

我有一个338x338点blueCircle,一个180x180红圈,一个118x118 greenCircle,一个84x84 purpleCircle,最后是一个50磅高的adBanner。我希望实现的结果是拥有一个尊重这些视图尺寸的iPhone 6 Plus用户界面,以及适用于所有其他用户界面的正确缩小的UI;除此之外,我会让用户付费删除底部的广告横幅,因此我需要相应地调整UI(将横幅的垂直间距设置为横幅并将其高度设置为0也许?)。我使用Interface Builder搞混了,结果我得出了一个体面的 - 不是很精确的结果。拿一个iPhone 4S的屏幕上看看UI:

它看起来不错,但有大问题。在界面生成器中,我正在使用与iPhone 6 Plus相同宽度的自由形式ViewController(414点),并在其上添加了以前列出的帧大小的所有圆视图。举一个例子,让我们暂时忽略所有其他约束,以专注于宽高比的约束:在338x338 blueCircle上,我添加了宽高比约束,在180x180 redCircle上也是如此。然后我控制 - 从redCircle拖动到blueCircle并再次点击高宽比,以便它相应地调整到blueCircle。正如我所说的结果是不准确的,因为如果我println()redCircle的框架,控制台会说它的宽度等于175.666666666667(而不是180)点。

Here's该项目让你可以自己检查一下。我相信它的价值超过千言万语。我在自动布局方面不是很擅长,并且我确信我会造成太多无用的限制。我能做些什么来改善我的布局?

+0

它是否需要自动布局?在通过代码布局时,这样的事似乎更容易......但也许这只是我的看法。 - 不幸的是,我对自动布局也不是很熟悉。 – Cabus

+0

我想你会需要比自动布局允许的更多逻辑。我会研究你可以使用的最简单的约束条件,然后在视图加载时用代码调整它们。 可以在代码中引用约束,就像您可以使用视图本身一样(控件拖动到您的代码)。我已经做到了这一点,以便巧妙地解决一些限制,让事情恰到好处。 例如,如果您不满意宽度为175.66667,那么在代码中,您可以在做一些舍入后调整约束。 –

+0

目前我没有在我的实际项目中使用自动布局。我只是检查视图框架以查看应用程序在哪个设备上运行。当由于背景调用/导航/音频而导致状态栏高度增加时,界面更改其高度时,我遇到了这种方法的一些问题。 – lucamegh

回答

0

您需要将所有圆视图的高度和宽度设置为与其父视图成比例。 我将蓝色视图的高度设置为0.5,与其父视图成比例,其宽度将与其自身的纵横比为1:1 对所有其他视图重复相同,并在视图之间应用垂直间距和水平间距

这是它的外观上iPhone 4

enter image description here

这是它的外观上iPhone 6加

enter image description here

相关问题