gpt4 book ai didi

ios - iPhone - 调整图像和两个标签以适应屏幕

转载 作者:行者123 更新时间:2023-11-28 07:12:03 25 4
gpt4 key购买 nike

我是 iPhone 开发的新手。我有一个包含图像、标题和内容的屏幕: Screen template

图像具有动态大小,所有文本也可以具有任意长度。我想要实现的是使图像完全适合屏幕,并使所有标签的长度都达到应有的长度。

经过大约 5 个小时的工作后,我有:

  • 工作标签长度,通过设置 Lines=0Preferred Width=content width 实现
  • 无效图像,留下空白

我读了很多书,我了解Content Hugging PriorityContent Compression Resistance Priority。我知道 UIViewContentMode 的差异。我知道我可以手动设置 UIImage.frame=CGRectMake(...)。什么都不管用。我的图像比高更宽(假设宽度/高度 = 3)。如果我有 UIViewContentMode=Aspect Fit 那么我将在图像上方和下方有空白区域。如果设置为 Aspect fill 则图像太高并且也会被裁剪。在代码中更改框架不会改变 View 中的任何内容。我想要的是使用 Aspect fit 制作的尺寸图像,但没有空格。

最佳答案

我终于搞定了。首先,每个人都写到 UIImageView.Frame 应该被修改以缩小图像,但请注意,如果您的 View 是 UITableViewCell 那么您应该在 layoutSubviews 方法(记得在开头调用 super.layoutSubviews())。

其次,在 IB 中为您的 UIImageView 设置一个临时值(例如 100)的高度限制。您将在 layoutSubviews 方法中更改该约束。

最后:拟合图像与比例无关。设置 UIViewContentMode=Aspect Fit。那么只有当初始图像比屏幕宽时,才会出现顶部和底部区域空白的情况。计算适当的高度也应该在 layoutSubviews 中进行。

示例实现:

override func layoutSubviews() {
super.layoutSubviews()
var imageWidth = (imageViewObject.image?.size.width)!
var imageHeight = (imageViewObject.image?.size.height)!
var frameWidth = UIScreen.mainScreen().bounds.width
var properHeight: CGFloat

if imageWidth > frameWidth {
var ratio = frameWidth / imageWidth
properHeight = imageHeight * ratio
}
else {
properHeight = imageHeight
}

imageHeightConstraint.constant = properHeight
imageViewObject.frame = CGRectMake(0, 0, frameWidth, properHeight)
}

关于ios - iPhone - 调整图像和两个标签以适应屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com