【问题标题】:iOS: Scaling for different screen sizes with Auto LayoutiOS:使用自动布局缩放不同的屏幕尺寸
【发布时间】:2015-04-02 07:49:07
【问题描述】:

我正在为 iPhone 编写一个应用程序并且我正在使用自动布局。我了解@1x、@2x 和@3x 的工作原理,但我不了解的是如何使用自动布局处理不同的屏幕尺寸。

如果我想让一个场景在 iPhone 6+、iPhone 6 和 iPhone 5 上都好看,我需要考虑每部手机的不同尺寸。我不能在所有 iPhone 上使用相同的图像尺寸(以磅为单位),因为它在较小的手机上看起来太大,或者在较大的手机上看起来太小。而且我什至不想想象 iPad 布局的麻烦。

我该如何解决这个问题?我应该使用约束来使所有图像动态缩放吗?这听起来可行,但我想知道最好的解决方案是什么。

谢谢。我真的很茫然。

【问题讨论】:

    标签: ios objective-c iphone autolayout screen


    【解决方案1】:

    如果您想保持不同尺寸的比例(例如,在每个设备中具有相同外观尺寸的图像),您可以使用约束。

    我通常会做的一个小技巧是:

    定义纵横比约束(cmd + click 在您的视图中开始并在您的视图中结束):

    然后强制您的视图增加宽度或高度(即:定义左侧和右侧的约束)。

    这一切都取决于您实际想要什么,并且约束/代码在不同情况下会有所不同。

    【讨论】:

    • 这个解决方案是否适用于整个屏幕?这是我想做的事情,但我不知道“纵横比”约束。与仅定义左右约束(也应该拉伸图像)相比,它到底做了什么?对于我面临的问题,您在自己的应用程序中使用什么解决方案?我认为这是一个相当普遍的问题。谢谢。
    • Aspect Ratio 与 Non Aspect Ratio 的区别在于,这样可以保证如果增加宽度,图像将具有相同的比例,并且高度也会以相同的比例增加。正如我所说,这完全取决于您的具体问题。您可能希望将图像的大小增加到最大尺寸,或者以与其他图像相同的比例增加图像,甚至只是全屏显示。通常我用约束来解决这个问题,但是每种情况下的约束都是不同的。
    • 好的。我将尝试添加这些类型的约束,基本上是纵横比和左/右或上/下约束,以使我的子视图动态调整大小。但是,您如何以与其他图像相同的比例增加图像的大小?
    • 您还可以建立图像之间的比例。如果您 ctrl 从一个图像开始并在另一个图像结束并选择宽度或高度,则您会在第一个图像的宽度和第二个图像的宽度之间创建关系。
    • 我在调整大部分图片大小方面一直在取得进展。但是我仍然对一些更独立于其他图像的图像存在问题。在我看来,我有几张垂直相关的图像,因此由于顶部和底部约束以及一两个左右约束,它们都可以很好地自动调整大小。但我也有一些小得多的图像,我不知道如何调整它们的大小。我可以在点上做一个底部/顶部约束,但它不适用于所有视图。使用乘数似乎有点随机/不可预测。想法?
    【解决方案2】:

    你可以让@2x 和@3x 不成比例地大于它的@1x 对应部分,然后使用 UIImageView 的固有尺寸让它针对不同的屏幕尺寸变得更大

    我自己从未尝试过这样的事情,但我看不出它不起作用的原因

    【讨论】:

    • 这不是很好,因为@2x 用于iPhone 4、iPhone 5 和iPhone 6,它们的屏幕尺寸完全不同。基本上这样的解决方案对于 4 和 5 来说非常好,但对于 6 来说根本不起作用。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2014-12-15
    相关资源
    最近更新 更多