UITableViewCell复合布局

时间:2019-03-10 10:34:46

标签: uitableview uicollectionview uistackview

渲染enter image description here

我使用了UIStackView布局,图像部分使用了UICollectionView。

UITableViewCell:

let nameStackView = UIStackView(arrangedSubviews: [name, time])
    nameStackView.axis = .vertical

    let userStackView = UIStackView(arrangedSubviews: [avatar, nameStackView])
    userStackView.axis = .horizontal
    userStackView.spacing = 10

    let headerStackView = UIStackView(arrangedSubviews: [userStackView, describeLabel])
    headerStackView.isLayoutMarginsRelativeArrangement = true
    headerStackView.layoutMargins = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
    headerStackView.axis = .vertical
    headerStackView.spacing = 10

    let commentStackView = UIStackView(arrangedSubviews: [UIView(), commentButton, likeButton])
    commentStackView.isLayoutMarginsRelativeArrangement = true
    commentStackView.layoutMargins = UIEdgeInsets(top: 15, left: 15, bottom: 20, right: 15)

    rootStackView = UIStackView(arrangedSubviews: [headerStackView, collectionView, commentStackView])
    rootStackView.translatesAutoresizingMaskIntoConstraints = false
    rootStackView.axis = .vertical
    contentView.addSubview(rootStackView)

    NSLayoutConstraint.activate([
        avatar.widthAnchor.constraint(equalToConstant: 34),
        avatar.heightAnchor.constraint(equalToConstant: 34),
        rootStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 0),
        rootStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 0),
        rootStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0),
        rootStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0)])

代码是主要的布局部分,不包括元素,应该可以理解。

最困难的部分是UICollectionView的高度布局。 有什么好方法吗?

0 个答案:

没有答案
相关问题