如何通过stackview将图像添加到tableview单元格

Posted

技术标签:

【中文标题】如何通过stackview将图像添加到tableview单元格【英文标题】:How to add images to a tableview cell through stackview 【发布时间】:2017-05-25 11:02:19 【问题描述】:

我有一个函数可以找到应该添加到堆栈视图中的星数。 stackview 位于表格单元格内,因此显示正确的评级,该评级是从 CoreData 检索的。但是,评分未显示。

函数...

  func setRating(entry: Entry, ratingView: UIStackView) -> UIStackView

    for _ in 0..<Int(entry.rating) 

        let image = UIImage(named:"ratingFilled")
        let imageView = UIImageView(image: image!)

        imageView.frame = CGRect(x: 0, y: 0, width: 20, height: 20)

        NSLayoutConstraint(item: image!, attribute: .height, relatedBy: .equal, toItem: image!, attribute:.width, multiplier: 1.0, constant:0.0).isActive = true

        ratingView.addArrangedSubview(imageView)
    

    return ratingView

Tableview 单元格调用...

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell //creates rzeusable cell and assigns cell items

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell

    let entry = entries[indexPath.row]

    cell.nameLabel?.text = entry.restaurantName

    cell.ratingView = setRating(entry: entry, ratingView: cell.ratingView)

    return cell

【问题讨论】:

【参考方案1】:

您需要为每个 imageViewstackView 本身添加一个宽度约束。

NSLayoutConstraint(item: image!, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 20.0).isActive = true
NSLayoutConstraint(item: image!, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 20.0).isActive = true

还要确保将stackView 轴设置为水平

stackView.axis = .horizontal

【讨论】:

stackview 处于水平状态,我想我已经将 imageView 帧设置为 20 到 20。添加约束后它仍然无法正常工作 你还需要添加高度约束,检查编辑 添加具有相同 2 项的约束并不意味着,您需要添加具有常量的约束,如上所示。让我知道这是否适合你。 这是别的东西,哈哈,我意识到我的“入口”变量有一个问题,将评级存储为 0。感谢 Joze 的帮助

以上是关于如何通过stackview将图像添加到tableview单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何将 stackViews 添加到 UITableViewCell?

如何在swift中使用for循环将按钮添加到stackview?

如何将子视图添加到我的 stackView?我试试看,但我看不到它们

collectionview 或 uitableview 内的 Stackview

StackView 在一个元素周围添加额外的空间

如何停止 Xamarin Android StackView 元素中的项目重叠?