Ios 图像大小与屏幕大小成比例
我第一次做了一个通用的应用程序。我想根据屏幕大小改变图像大小,使其在iPad上看起来更大,在iPhone上看起来更小。此外,它应该在两个方向上都很好 我希望UIImageView的大小与屏幕大小成比例。这些是迄今为止应用的约束条件: 此处topConstraint是一个具有以下代码的插座:Ios 图像大小与屏幕大小成比例,ios,swift,xcode,autolayout,constraints,Ios,Swift,Xcode,Autolayout,Constraints,我第一次做了一个通用的应用程序。我想根据屏幕大小改变图像大小,使其在iPad上看起来更大,在iPhone上看起来更小。此外,它应该在两个方向上都很好 我希望UIImageView的大小与屏幕大小成比例。这些是迄今为止应用的约束条件: 此处topConstraint是一个具有以下代码的插座: override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordina
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。我希望随着设备屏幕尺寸的增加,屏幕尺寸也会增加。标题标签的顶部已经有了。在发布此问题之前,我也尝试了尾随约束部分,因为标题标签的顶部约束在左侧面板的屏幕截图中不可见,所以您可以更新您的屏幕截图吗