Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 图像大小与屏幕大小成比例_Ios_Swift_Xcode_Autolayout_Constraints - Fatal编程技术网

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

Ios 图像大小与屏幕大小成比例,ios,swift,xcode,autolayout,constraints,Ios,Swift,Xcode,Autolayout,Constraints,我第一次做了一个通用的应用程序。我想根据屏幕大小改变图像大小,使其在iPad上看起来更大,在iPhone上看起来更小。此外,它应该在两个方向上都很好 我希望UIImageView的大小与屏幕大小成比例。这些是迄今为止应用的约束条件: 此处topConstraint是一个具有以下代码的插座: override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordina

我第一次做了一个通用的应用程序。我想根据屏幕大小改变图像大小,使其在iPad上看起来更大,在iPhone上看起来更小。此外,它应该在两个方向上都很好

我希望UIImageView的大小与屏幕大小成比例。这些是迄今为止应用的约束条件:

此处topConstraint是一个具有以下代码的插座:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.current.orientation.isLandscape {
        topConstraint.constant = 40
    }
    else {
        topConstraint.constant = 12
    }
}
如果我只给出前导尾部顶部和底部约束,则它会显示红线,表示缺少的约束,如下所示:


请帮忙。我使用的是swift 3和xcode 8。我知道这与纵横比有关,但我的还是不够完美。

设置纵横比
1:1
,然后查看。它将根据设备大小的最小比例(高度或宽度),以
1:1的比例拉伸您的
imageview


注意:设备方向在这里也起着重要作用。

您的顶部标签没有足够的约束来知道它应该在Y轴上的位置。 让我们看看从视图底部开始沿Y轴的约束。您设置:

  • 视图的底部距离detailLabel的底部为16p
  • 从imageView底部开始,detailLabel顶部为16p
  • 然后,您就有了给定宽度的图像的纵横比(您通过imageView的前导约束和X-中心来设置它)来设置高度
  • imageView顶部距detailLabel底部16p
  • 日期标签顶部距标题标签底部4p处
  • 您没有设置从标题标签顶部开始到视图顶部的约束

总之,您缺少一个约束。设置标题标签的顶部约束,应该可以。此外,我将删除imageView的X中心约束,并将其替换为32pt的尾随约束(与前导约束相同,更易于阅读,将显示相同的约束,且无需进行更多推断)

根据我的理解,我的建议是:

imageview的约束:前导、尾随、顶部和高度

现在为高度约束指定出口

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


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

要根据屏幕大小设置图像大小,您需要针对当前视图设置纵横比约束(当前屏幕大小)

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

为什么会有红线?


由于您使用的是scroll view,scrollview的内容大小取决于其子视图及其子视图的约束


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

您是否为日期标签设置了底部约束?@SnehaGeorge日期标签的底部设置为ImageView.top=dateLabel.bottom+16因为您使用的是滚动视图,并且这里缺少图像高度,所以它会显示红线。另外,请告诉我您查询的确切细节。您希望它在iPad中显示的方式。因为1:1也将显示屏幕尺寸最小尺寸的图像,对于iPad,高度和宽度在apsect比率上的差异很小。请详细告诉我,或者与我分享您的源代码。我希望图像在纵向模式下以显示的大小显示,在横向模式下,我希望它看起来或多或少像纵向模式(但稍大一点)我尝试了1:1,但是图像变大了,超过了图片中显示的当前大小。当前大小是多少?您希望所有设备的大小都相同吗?当前大小是311*216。我希望随着设备屏幕尺寸的增加,屏幕尺寸也会增加。标题标签的顶部已经有了。在发布此问题之前,我也尝试了尾随约束部分,因为标题标签的顶部约束在左侧面板的屏幕截图中不可见,所以您可以更新您的屏幕截图吗