相关疑难解决方法(0)

UICollectionView,全宽单元格,允许自动布局动态高度?

这是关于当前iOS开发的一个相当基本的问题,我从来没有找到一个好的答案.


在(比方说)垂直UICollectionView,

是否可以使用全宽度单元格,但是,允许通过自动布局控制动态高度?

(如果你是iOS"动态高度"的新手,意味着单元格有一些,比方说,文本视图可以是任何长度或图像可以是不同的大小,所以最终每个单元格是一个完全不同的高度.)

如果是这样的话?

这对我来说可能是"iOS中最重要的问题而没有真正好的答案".

ios autolayout uicollectionview

91
推荐指数
8
解决办法
5万
查看次数

在iOS 12中,何时使用UICollectionView布局单元格,在nib中使用autolayout

像这样的代码

collectionLayout.estimatedItemSize = CGSize(width: 50, height: 25)
collectionLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize
collectionLayout.minimumInteritemSpacing = 10 

for _ in 0 ..< 1000 {
    let length = Int(arc4random() % 8)
    let string = randomKeyByBitLength(length)
    array.append(string!)
}
collectionView.reloadData()
Run Code Online (Sandbox Code Playgroud)

细胞限制:

在此输入图像描述

当我在iOS 12上运行它时,它是不同的.左模拟器是iOS 11,右边是iOS 12:

在此输入图像描述

但是,当我滚动它时,细胞的帧将是正常的.


重现问题的示例项目:https://github.com/Coeur/StackOverflow51375566

ios uicollectionview ios-autolayout ios12 xcode10

44
推荐指数
5
解决办法
2万
查看次数

带两个动态标签和自动布局的UICollectionViewCell动态高度

我有一个UICollectionViewCell子类,该子类使用原型单元和约束进行设置(每个视图都垂直和水平连接)。

我有两个大小不一的标签,它们可以是一行或两行。为此,我在每个标签上设置了两个高度限制,其中一个高度大于或等于(取决于标签为16或20)而小于或等于(取决于标签为32或40)。

标签上的行数设置为0。(尽管我尝试了各种设置)。

由于我使用了自动布局和约束来设置视图,因此我在单元格的awakeFromNib()中的内容视图上指定了宽度

override func awakeFromNib() {
        NSLayoutConstraint.activate([contentView.widthAnchor.constraint(equalToConstant: 341)])
        super.awakeFromNib()
        configureBorder()
}
Run Code Online (Sandbox Code Playgroud)

在collectionView的布局上,我已经为EstimateItemSize和itemSize指定了automaticDimension常量。

if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    flowLayout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
    flowLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize
}
Run Code Online (Sandbox Code Playgroud)

关于使用自动布局的想法,我尚未在集合视图上实现委托。

我遇到了非常不一致的布局,在某些情况下该单元格会按照我的意愿出现,在另一些情况下,标签被截断了,在另一些情况下,标签却非常狭窄,并在三行上显示了文本。

我尝试了很多事情,包括 .sizeToFit() 在设置了标签的text属性之后调用 每个标签,以及 .setNeedsDisplay() 在单元格从其返回之前调用 cellForItemAt

我想知道使用情节提要约束执行此操作的正确方法是什么。在SO上,我已经针对类似问题解答了一些流行的答案,尽管并没有取得任何真正的成功。

ios autolayout uicollectionview uicollectionviewcell swift

3
推荐指数
1
解决办法
1637
查看次数