固溶基于子视图灵活调整的UIView(Solid solution to flexibly resi

2019-10-20 20:37发布

想象一下,你有4点左右的观点,所有的宽度100,不同的高度。 你必须保持它们全部的包装视图W上。

A   |
B   |  W
C   |
D   |

小意见的高度可以改变。 在你希望他们所有的移动,浮动,适当和调整W.那个时候

现在,我正要写的几行代码来做到这一点。

所以..(1)你必须W¯¯找到所有的子视图和顺序列出从上到下。 然后,(2)每个有变化的时候,你会(3)重新定位各ABCD的。 每一个的位置是它上面的项目的高度的总和,和(4)调整W至所有高度的总和。

现在,一切都很好,但是 - 白痴推倒重来!

我缺少的东西的iOS明显? 是已经有一个包每个人都使用做这一切的时候? 什么建? 什么情况?

(请注意,当然令人沮丧,对我们的Android的朋友,这是建立在!当然还有任何网页的HTML系统自动执行此操作。)

什么是这里的iOS意见的权利的工程解决方案? 根据记录,这是iOS7 +只,没有老式的东西需要被覆盖,如果它的确与众不同。 干杯

Answer 1:

(1)你必须W¯¯找到所有的子视图和顺序列出从上到下。 然后,(2)每个有变化的时候,你会(3)重新定位各ABCD的。 每一个的位置是它上面的项目的高度的总和,和(4)调整W至所有高度的总和。

您可以使用约束在Interface Builder对于整个过程,无需代码。 做这个:

  • 设定子视图A至100的宽度
  • 约束B,C,和d以匹配A的宽度
  • 添加A和B,B和C,以及C和d之间的垂直间距的限制,以保持它们的相对位置
  • 添加W(在上海华,以灰色示出)和A之间的垂直间距约束
  • 添加W和d之间的垂直间距约束
  • 添加W和视图A之间的前缘和后空间限制

你会的东西,看起来像这样结束:

在Xcode约束编辑器不是完全直观,但它容易,一旦你知道你可以和不能与约束IB做什么,当你需要使用代码来设置的限制使用。



文章来源: Solid solution to flexibly resize UIView based on subviews