UICollectionView水平对齐滚动第一次单元格中心对齐,第一次没有使用Swift精确地放置中心位置

时间:2019-06-17 14:33:51

标签: ios swift uicollectionview

我的情况是,我正在尝试根据选择实现scrollview水平CollectionViewCell的第一个和最后一个单元格中心对齐。在这里,didselect的第一个单元格第一次没有显示准​​确的中心位置。如果我func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let text = self.items[indexPath.row] let cellWidth = text.size(withAttributes:[.font: UIFont.systemFont(ofSize: 14.0)]).width + 10.0 return CGSize(width: cellWidth, height: collectionView.bounds.height) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { let inset: CGFloat = collectionView.frame.width * 0.5 - 52 * 0.5 return UIEdgeInsets(top: 0, left: inset, bottom: 0, right: inset) } 一旦一切正常。 我需要修复第一次打开应用程序的第一个单元格,但未显示确切的中心位置。

注意:我没有添加页眉和页脚,也已通过情节提要完成了设计。

https://login.microsoftonline.com/ef7e48cb-7676-47e9-9a28-c69910d92560/oauth2/authorize?response_type=code&client_id=3a0621c0-2848-47f5-83ee-bebeede8aaa6&resource=

1 个答案:

答案 0 :(得分:1)

由于每个52的{​​{1}}是cell width,因此不能直接使用width作为cell

您需要根据dynamicleftInsets {{1}的rightInsets计算collectionView的{​​{1}}和actual width }。

您可以像使用first和{的last方法一样,计算cellwidth first的{​​{1}} last中的{1}} cell,即

collectionView(_:layout:sizeForItemAt)

示例:

enter image description here

如果您仍然遇到任何问题,请告知我。