图像大小与屏幕大小成比例

时间:2017-02-21 07:54:59

标签: ios swift xcode autolayout constraints

我是第一次制作通用应用程序。我想根据屏幕尺寸改变我的图像尺寸,以便在iPad上看起来更大,在iPhone上看起来更小。它也应该在两个方向看起来都很好。

enter image description here

我希望UIImageView的大小与屏幕大小成比例。这些是迄今为止应用的限制因素:

enter image description here

这里topConstraint是一个出口,其代码如下:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.current.orientation.isLandscape {
        topConstraint.constant = 40
    }
    else {
        topConstraint.constant = 12
    }
}

如果我只提供前导顶部和底部约束,那么它会显示描述缺失约束的红线,如下所示:

enter image description here

请帮忙。我正在使用swift 3和xcode 8.我知道它与纵横比有关但我的仍然不是很完美。

4 个答案:

答案 0 :(得分:0)

设置宽高比1:1并查看。它会根据设备大小的最小比例(高度或宽度)以imageview的比例拉伸1:1
注意:设备方向在这里也起着重要作用。

答案 1 :(得分:0)

您的顶级标签没有足够的限制来知道它沿Y轴的位置。 让我们从视图底部开始查看沿Y轴的约束。你设置:

  • 视图底部距离detailLabel底部16p,
  • 你的detailLabel顶部距离imageView底部16p,
  • 然后你得到图像的纵横比给定宽度(通过imageView和X中心的前导约束设置它)设置高度
  • imageView top from 16p from detailLabel bottom
  • dateLabel顶部位于titleLabel底部的4p
  • 您没有从titleLabel的顶部开始设置约束并转到视图的顶部。

总而言之,您缺少一个约束。设置标题标签的顶部约束,你应该没问题。此外,我会删除你的imageView的X中心约束,并用32pt的尾随约束替换它(与前导约束相同,它更容易阅读,将显示相同,并且那里的推断较少做)

答案 2 :(得分:0)

根据我的理解建议是:

对imageview的约束:前导,尾随,顶部和高度。

现在给出高度限制的出口。

然后对于底部标签,约束是:顶部,底部,前导,尾随。

现在根据需要设置imageView的高度约束常数。

答案 3 :(得分:0)

要根据屏幕尺寸制作图像尺寸,您需要根据当前视图(当前屏幕尺寸)设置纵横比约束。

从给定约束中,您缺少图像视图的高度和宽度,因为在将图像设置为它之前无法推断其尺寸,因此您需要给出高度和宽度。宽度到图像视图,红线将自动删除。

为什么有红线?

  

由于您使用滚动视图,因此滚动视图的内容大小取决于其子视图以及为其子视图提供的约束。

因此请确保正确给出子视图的所有约束。否则滚动视图将不会滚动。