在TableViewCell内设置UIImage时,约束不起作用

时间:2019-04-04 12:35:37

标签: ios swift xcode autolayout

当我在UIImage函数中设置cellForRowAt时,看起来我正在设置的UIImageUIImageView重叠。

已编辑:在clipsToBound

中标记了contentMode并将.scaleAspectFit设置为Storyboard

我照常设置Constraints中的所有Storyboard

enter image description here

但是当我运行该应用程序时,它看起来比我设置的Constraints具有更高的优先级,这就是我得到的:

enter image description here

不久前,我在其他项目中做了类似的事情,对我来说效果很好:

enter image description here

这是用于设置单元格的代码,尽管我可以确定我只是偶然地在Storyboard上标记或未标记了一些东西:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return songArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: MainVCCell.CELL_ID, for: indexPath) as? MainVCCell else { return UITableViewCell() }
    cell.showLoader()
    cell.songNameLabel.text = songArray[indexPath.row].title

    if songImageArray[songArray[indexPath.row].title] != nil {
        cell.imageView?.image = songImageArray[songArray[indexPath.row].title]!!
        cell.hideLoader()
    }
    cell.setupImageDesign()
    return cell
}

请让我知道是否需要其他信息,谢谢。

5 个答案:

答案 0 :(得分:1)

将图像视图clipsToBounds设置为true

答案 1 :(得分:1)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: MainVCCell.CELL_ID, for: indexPath) as? MainVCCell else { return UITableViewCell() }
    cell.showLoader()
    cell.songNameLabel.text = songArray[indexPath.row].title

    if songImageArray[songArray[indexPath.row].title] != nil {
        cell.imageView?.image = songImageArray[songArray[indexPath.row].title]!!
        cell.hideLoader()
    }
    cell.setupImageDesign()
    return cell
}

cell.imageView?.image是UITableViewCell中的默认imageView。
您必须重命名自定义UIImageView插座

答案 2 :(得分:0)

在情节提要中更改UIImageView的contentMode 并设置clipsToBounds = true

答案 3 :(得分:0)

将ImageView的ContentMode更改为.scalToFill,并将裁剪属性更改为clipToBounds

答案 4 :(得分:0)

您遇到限制边距

的问题

在设置约束之前,请删除所有约束并确保取消选中此选项。

enter image description here

在Storyboard中看起来像这样

enter image description here