Autolayout - 根据屏幕大小动态更改子视图大小

时间:2015-02-18 03:53:32

标签: ios xcode swift autolayout

我的设计在autolayout间距正确,但现在我想找到一种方法来动态更改图标和字体的视图大小,具体取决于屏幕尺寸(见下图)但没有我在自动布局中玩过的设置似乎拉伸了图像。这是我必须以编程方式完成的吗?正如您所看到的,iPhone 6版本的空间太大,所以我需要一种方法来填补它。

Screen Sizes

4 个答案:

答案 0 :(得分:3)

你有几个选择。

1)你可以通过编程方式完成,但很多人搞砸了数学,代码也不是很干净。 (在我看来)这样做的最好方法是在你想要改变的东西上设置布局约束,并用IBOutlets连接它们(你可以像挂钩UI元素一样挂钩约束)。从那里,您可以将myConstraint.constant设置为您喜欢的任何值。

2)您还可以设置< =或> =值的约束。这允许您将事物变大或变小到极限。你可以用这些来狡猾。通常,您可以使用这些组合来设置事物的最小和最大尺寸。

3)Xcode 6允许您为不同的屏幕尺寸设置不同的约束。这是最新的方式,可能是Apple希望你这样做的方式。关于如何使用此选项应该有很多信息。

答案 1 :(得分:1)

您必须以编程方式手动控制的字体大小。但是图像尺寸可以缩放。只需将图像固定到其父级,但不要通过宽度/高度进行约束,而是添加宽高比约束。

答案 2 :(得分:1)

使用带有自动布局的大小类对于制作UIControl的方式来说非常有趣。

我正试图找出一种动态更改图标视图大小的方法,这是我必须以编程方式完成的吗?:无需以编程方式执行,您需要了解在大小类的深度,只需使用视图,宽高比,约束(兄弟姐妹)之间的关系,这样就不会与其他You can check here for more info发生冲突。

我正试图找出一种根据屏幕尺寸动态更改字体的方法在这里,您可以在属性检查器中将其添加到与大小类相关的check this from Doc

enter image description here

答案 3 :(得分:0)

我认为解决此问题的最佳方法是以编程方式添加约束。它可以让您更好地控制自己在做什么。您可以查询屏幕大小,然后确定要添加的约束的大小。如果需要根据布局方向更改约束,请聆听方向更改,然后更改约束。之后,您需要调用setNeedsUpdateConstraints方法。

我写过关于此问题的this博客文章。在那里你可以获得更多关于此的信息。此外,this github链接包含有关如何解决此问题的更多代码示例。