Swift:ImageView 方面填充错误

Posted

技术标签:

【中文标题】Swift:ImageView 方面填充错误【英文标题】:Swift: ImageView Aspect Fill errors 【发布时间】:2016-08-19 13:09:39 【问题描述】:

我想在 UITableView 中创建一个 UI,有点像 Facebook 主页,在顶部,有一个图像充当封面图像,在这个“封面图像”的表面上有一个“用户图片”。

Facebook Home Page

我首先添加了ImageView,设置了自动布局约束。然后将另一个ImageView 拖到之前的ImageView 之上,然后添加约束。 “封面图片”的大小为 200 * 600(constrains to the cell with top: 0, left:0, right:0, height: 200),“用户个人资料图片”的大小为 50 * 50(constrains to the cell with bottom:0, left:275, right: 275, hight: 50, width: 50)。我将TableView 设置为静态单元格,高度为 300,宽度为 600

但是,当我将 ImageView 模式设置为“Aspect Fill”时,“封面图像”将填充整个单元格,即使我将其高度设置为 200。并且没有显示“用户个人资料图像”。

有人知道我做错了什么吗?谢谢

更新:在我的 TableView 中,我有 2 个静态单元格,第一个用于放置封面图像和个人资料图像,第二个用于放置文本内容。对于第二个单元格,我希望它是动态的文本长度,所以我使用以下代码:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if indexPath.row == 0 
        return 300

    
    return tableView.contentSize.height

我不确定这是否与问题有关。

我尝试只设置封面图片,我添加了约束 (top:0, left:0, right:0, bottom: 100) 所以封面图片的大小应该是:600*200(单元格为 600 * 300)。但是当我将图像视图模式设置为“方面填充”时,它仍然会填充整个单元格,即使我将约束设置为底部:100。

【问题讨论】:

您是否在控制台中看到任何约束警告?如果是这样,那么修复它们,如果没有显示,试试这个:view.bringSubviewToFront(profileImageView) 如果你在故事板中设计过。将 profilepic 图像视图拖到该图像视图。再次尝试拖动并更改。我的意思是改变故事板结构中两者的层次结构 我应该在哪里添加该代码? @桑托什 我试过了,当所有图像视图的模式为“缩放以适应”时,它可以按我的意愿工作(但图像失真),但是当我更改为“纵横比填充”时,封面图像填满整个单元格,两个图像视图之间没有高度差距。@Jack 添加您加载封面图片的位置。 【参考方案1】:

这与您的约束有关。检查您的身高限制的优先级。它应该设置为 1000。

如果您无法弄清楚,另一种选择是在封面照片下方放置另一个尺寸为 100 的视图作为间隔,然后将其他图像约束到此间隔视图。然后您可以将其余元素放在此视图中。

【讨论】:

我在封面照片下添加了另一个视图,并首先删除了个人资料图像视图,当我选择“纵横比填充”时,它仍然会填充整个单元格。但是,如果我更改为“缩放填充”,它会按我的意愿工作,封面图像的高度为 200,视图为 300,因此有 100 个空白空间(我用橙色着色)。 这对你有用吗?如果是,请接受我的回答。谢谢 我正在努力重现您的问题。我已经按照您的描述制作了一个表格视图单元格,但没有得到相同的结果。似乎在我的机器上工作正常。你能分享关于你的项目的其他信息吗?是在github上吗? 我已经更新了我的问题,请看一下。因为没有很多代码,只有很少,我已经提出了我更新的问题,谢谢。 检查以确保您的底部约束设置为 = 而不是

以上是关于Swift:ImageView 方面填充错误的主要内容,如果未能解决你的问题,请参考以下文章

swift UIImage使用UIImageView调整方面填充和裁剪

Swift TableView ImageView + Label = 致命错误:索引超出范围

由于网络错误 - IMA SDK 错误和 iOS,无法从服务器请求广告

Xcode Storyboard 图像大小

致命错误:索引超出范围:Swift

生成器图像随机