如何根据具有自动调整大小的传入数据在集合视图单元格中添加随机内容(UIKit元素)?

时间:2017-03-26 23:49:35

标签: ios swift swift3 uicollectionview uicollectionviewcell

在这个函数中,我对传入的数据类型进行了切换,并调用了将子视图添加到我的单元格的函数。此刻我没有数据,我插入了存根。

方法不起作用,结果是textview之后的空白区域(避免图片),我不知道为什么,我将子视图添加到我的单元格,理论上它必须有效。现在我不使用开关。我有单元格高度350,标签高度50和textview高度50所以对于图像/视频我保持250。  请帮我提供建议。

func collectionView(_ collectionView: UICollectionView,
        cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell =  collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionNews",for: indexPath) as! NewsCell

        cell.personImage.image = UIImage(named: "welder.png")
        cell.textView.layer.cornerRadius = 5
        cell.addSubview(addImage(image : UIImage(named : "error.png")!, for: cell, at : indexPath ))

       //switch (contentArray[indexPath.row]){
       //case let image where image is String :
       //cell.addSubview(addImage(image : UIImage(named : "error.png")!, for: cell, at : indexPath ))
       //case let video where video is String :
       //break
       //default:
       //break
       // }

   return cell
}


func addImage(for cell : NewsCell, at index : IndexPath)->UIImageView{
    let testImg = UIImage(named: "error.png")

    let imageForCell = UIImageView(image: testImg)

    imageForCell.autoresizingMask = [UIViewAutoresizing.flexibleWidth , UIViewAutoresizing.flexibleHeight]

    imageForCell.frame = CGRect(x: cell.textView.bounds.minX, y: cell.textView.bounds.maxY + 5, width: imageForCell.frame.origin.x, height: imageForCell.frame.origin.y)

    imageForCell.layer.cornerRadius = 5
    imageForCell.layer.masksToBounds = true

    return imageForCell

}
func addVideo () {

}

1 个答案:

答案 0 :(得分:0)

首先:我看到函数 addImage 没有将UIImage声明为参数

第二:你为imageForCell设置框架属性是错误的。您应该执行以下操作:(假设您希望图像位于textView下方)

var newFrame = cell.textView.frame
newFrame.y += 5
imageForCell.frame = newFrame