Используйте UICollectionViewDelegateFlowLayout
методы для создания такого вида интерфейса.
Пример:
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
cell.layer.borderWidth = 2.0
cell.layer.borderColor = UIColor.white.cgColor
cell.layer.cornerRadius = 50.0
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.bounds.height, height: collectionView.bounds.height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return -50
}
}
В приведенном выше коде
Настройка minimumLineSpacingForSectionAt
и minimumInteritemSpacingForSectionAt
методов UICollectionViewDelegateFlowLayout
.
Поскольку ячейки в collectionView
выровнены left to right
по умолчанию, поэтому для получения желаемого результата нам нужно выровнять их right to left
.
Как показано на скриншоте выше, используйте semantic
свойство collectionView
для right to left
выравнивания ячеек.
Скриншот:
Edit-1:
Один из способов центрировать ячейки в collectionView
- это играть с collectionView's
width
и centre it horizontally
.
Ограничения CollectionView - top, width, centeredorizontally
В viewDidAppear
вручную вычислите width
из collectionView
в соответствии с numberOfItems
. В вашем случае numberOfItems = 3
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let width = min((collectionView.bounds.height) * CGFloat((numberOfItems-1)/2 + 1), UIScreen.main.bounds.width)
self.collectionViewWidthConstraint.constant = width
}