模拟UIStackView在9.0之前的iOS版本上按比例填充布局方法

模拟UIStackView在9.0之前的iOS版本上按比例填充布局方法,第1张

概述iOS 9.0附带UIStackView,可以根据内容大小更容易地布局视图.例如,要根据内容宽度将3个按钮放置在一行中,您可以将其简单地嵌入到堆栈视图中,设置轴水平和分布 – 按比例填充. 问题是如何在不支持堆栈视图的较旧iOS版本中实现相同的结果. 我想出的一个解决方案是粗糙的,看起来不太好.再次,您将3个按钮放在一行,并使用约束将它们固定到最近的邻居.在这样做之后,您显然会看到内容优先级歧义错 iOS 9.0附带UIStackVIEw,可以根据内容大小更容易地布局视图.例如,要根据内容宽度将3个按钮放置在一行中,您可以将其简单地嵌入到堆栈视图中,设置轴水平和分布 – 按比例填充.

问题是如何在不支持堆栈视图的较旧iOS版本中实现相同的结果.

我想出的一个解决方案是粗糙的,看起来不太好.再次,您将3个按钮放在一行,并使用约束将它们固定到最近的邻居.在这样做之后,您显然会看到内容优先级歧义错误,因为自动布局系统不知道哪个按钮需要在其他方面增长/收缩.

不幸的是,在应用启动之前,标题是未知的,所以你可以随意选择一个按钮.让我们说,我已经将水平内容的中间按钮的优先级从标准250缩小到了249.现在它会在其他两个之前增长.另一个问题是左和右按钮严格缩小到其内容宽度,没有任何好看的paddings,如在Stack VIEw版本.

解决方法 是的,我们可以通过仅使用约束获得相同的结果:)

source code

想像一下,我有三个标签:

> firstLabel内在内容大小等于(62.5,40)
> secondLabel内在内容大小等于(170.5,40)
> thirdLabel内在内容大小等于(54,40)

Strucuture

-- ParentVIEw --    -- UIVIEw -- (replace here the UIStackVIEw)       -- Label 1 --        -- Label 2 --        -- Label 3 --

约束

例如UIVIEw有这样的限制:
vIEw.leading = supervIEw.leading,vIEw.trailing = supervIEw.trailing,它是垂直居中的

UILabels约束

SecondLabel.wIDth等于:

firstLabel.wIDth *(secondLabelintrinsicSizeWIDth / firstLabelintrinsicSizeWIDth)

ThirdLabel.wIDth等于:

firstLabel.wIDth *(thirdLabelintrinsicSizeWIDth / firstLabelintrinsicSizeWIDth)

我会回来更多的解释

总结

以上是内存溢出为你收集整理的模拟UIStackView在9.0之前的iOS版本上按比例填充布局方法全部内容,希望文章能够帮你解决模拟UIStackView在9.0之前的iOS版本上按比例填充布局方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存