【问题标题】:Autolayout - Dynamically change subview size depending on screen size自动布局 - 根据屏幕大小动态更改子视图大小
【发布时间】:2015-11-08 13:31:32
【问题描述】:

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

【问题讨论】:

    标签: ios xcode swift autolayout


    【解决方案1】:

    这里有几个选项。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        使用具有自动布局的尺寸类只是一种有趣的方式来制作 UIControls。

        我正在尝试找出一种方法来动态更改图标的视图大小,这是我必须完全以编程方式完成的事情吗?:无需以编程方式进行,您需要了解在尺寸类的深度,只需处理视图之间的关系、纵横比、约束(兄弟),这样就不会与其他冲突,You can check here for more info。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-06-29
            • 2013-11-25
            • 2018-10-11
            • 1970-01-01
            • 2019-09-04
            • 1970-01-01
            • 1970-01-01
            • 2015-07-16
            • 1970-01-01
            相关资源
            最近更新 更多