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

Autolayout - Dynamically change subview size depending on screen size

我的自动布局间距设计正确,但现在我想找出一种方法来根据屏幕大小动态更改图标和字体的视图大小(见下图)但是none 我在自动布局中玩过的设置似乎拉伸了图像。这是我必须完全以编程方式做的事情吗?如您所见,iPhone 6 版本太多 space 所以我需要一种方法来填充它。

这里有几个选项。

1) 您可以通过编程方式完成,但很多人搞砸了数学,代码也不是很干净。执行此操作的最佳方法(在我看来)是对要更改的内容设置布局约束并将它们与 IBOutlets 连接起来(您可以像连接 UI 元素一样连接约束)。从那里,您可以将 myConstraint.constant 设置为您喜欢的任何值。

2) 您还可以设置 <= 或 >= 值的约束。这使您可以让事物变大或变小到一定程度。你可以用这些变得狡猾。通常您会结合使用这些来设置事物的最小和最大尺寸。

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

您必须以编程方式手动控制的字体大小。但是图像大小可以缩放。只需将图像固定到其父图像,但不要受 width/height 约束,而是添加纵横比约束。

将尺寸 类 与自动布局结合使用,让您的 UIControl 变得有趣起来。

我正在尝试找出一种动态更改图标视图大小的方法,这是我必须完全以编程方式做的事情吗?:不需要以编程方式做, 你需要深入了解大小 类, 只是玩弄视图之间的 关系, 宽高比, 约束(兄弟姐妹) 这样就不会与其他人发生冲突 , You can check here for more info

我正在尝试找出一种根据屏幕大小动态更改字体的方法您可以在此处的属性检查器中添加它相关尺码 类, check this from Doc

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

我已经写了 this blog article about this problem. There you can get more info about this. Also this github link 包含更多关于如何解决这个问题的代码示例。