【问题标题】:How do I position a label and a button on an image so that even if the image is scaled they are at the same place on the image?如何在图像上放置标签和按钮,以便即使图像被缩放,它们也位于图像上的同一位置?
【发布时间】:2017-07-13 18:54:40
【问题描述】:

我有一个几乎完整的应用程序。我想使用自动布局,但即使我搜索了很多关于这个主题的内容,我也找不到可以使用的答案。我可以让它在一种屏幕尺寸上正确显示,但不能在另一种屏幕尺寸上正确显示......这是我的问题

如何设置必要的约束,以便即使针对不同尺寸的设备缩放计数器,标签和按钮在图像上的相同位置? (图片为png图片)

如果您能回答或指导我找到一个显示如何做类似事情的答案,我真的很高兴。

这就是我想要的

如果我尝试使用自动布局并在不同的屏幕尺寸上执行此操作,就会发生这种情况。

  • 这与我在应用程序中使用的图片不同,但它会给你一个想法。)

再次感谢

编辑:

感谢您的回答,但正如 cmets 中指出的那样,第一个答案没有提供针对不同屏幕尺寸缩放图像的方法。

第二个答案提供了一种方法,但我无法理解答案的第二部分。我需要更多细节。如果有人可以在这个问题上帮助我,我会很高兴。

我仍在努力解决这个问题。如果我按照第二个答案 Xcode 说我需要 X 位置,第一个填充视图的宽度和 Y 位置,第二个填充视图的高度。我被困在这一点上。我不确定这些观点有什么价值。

【问题讨论】:

  • 您确定在图像资源(1x、2x 和 3x)中使用了正确缩放的图像。我尝试在图像资源中放置正确大小的图像,并且自动布局工作。
  • 我有 1x 2x 和 3x。我使用了一个名为 Prepo 的 mac 应用程序来创建它们。但我不太擅长自动布局。你能告诉我你使用的约束吗?我错过了什么吗?谢谢
  • 我添加了一个示例项目作为答案

标签: swift autolayout ios-autolayout


【解决方案1】:

您必须针对图像视图添加约束。我用你的图片创建了一个小项目。这应该可以帮助您入门。

https://1drv.ms/u/s!Aq8sK_MQLIL9gxMl-lBOMHkToudU

【讨论】:

  • 请记住,在这种情况下,每个设备的图像视图将具有相同的宽度和高度。它不会针对不同尺寸的设备进行扩展
  • 我玩过这个,但正如@Vlad 指出的那样,它不能针对不同的屏幕尺寸进行缩放。有什么方法可以实现吗?
【解决方案2】:

由于图像大小会在不同的屏幕尺寸上发生变化,因此您不能设置常量约束。你需要的是比例约束。

  1. 设置您的UILabelUIButton 使其宽度和高度分别与UIImageView 的宽度和高度成比例。

要做到这一点:点击你的UILabel

然后 Ctrl 将其拖到UIImageView 上,选择等宽等高

假设您的 UILabel 的宽度为 100 像素,而您的 UIImageView 的宽度为 500 像素。编辑您刚刚设置的约束,并将乘数设置为 100:500

这将确保对UIImageView 宽度的任何修改都会相应地影响UILabel 宽度。对高度约束做同样的事情。

UIButton 重复相同的步骤。

  1. 很遗憾,无法将顶部/底部/尾随/前导约束设置为与 UIImageView 大小成比例,但您可以使用 填充视图 - 可以模拟布局约束的透明视图。

您将需要两个 填充视图:一个用于顶部约束:

(将其高度设置为与 UIImageView 高度成正比)

一个用于前导约束

(将其宽度设置为与 UIImageView 宽度成正比)

如果不够清晰,我可以为你制作一个小视频。

【讨论】:

  • 感谢您的回答。我想我能够理解第一部分,但我无法理解第二部分。我们是否将视图固定在任何地方?这是我在自动布局中做的最复杂的事情。但我认为我需要学习它。我真的很感谢视频。
猜你喜欢
  • 1970-01-01
  • 2018-07-30
  • 2013-11-28
  • 2016-11-16
  • 1970-01-01
  • 2012-02-25
  • 2019-06-04
  • 2011-03-25
  • 1970-01-01
相关资源
最近更新 更多