Я разработчик android и разрабатываю свое первое iOS
приложение, мне нужно реализовать GridView, чтобы добавить какой-то социальный значок, поэтому после некоторого поиска я нашелUICollectionView
, но он не работает, как ожидалось. Как установить динамическую высоту представления UICollection? На самом деле я хочу отобразить все значки, но он показывает только строку и другие после прокрутки UICollectionView.
ниже приведен пример:
Это то, что я получаю
Это то, чего я хочу:
Я использую ниже код:
import UIKit
class CollectionViewDemo: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var socialHandleCollection: UICollectionView!
@IBOutlet weak var socialImageView: UIImageView!
var socialHandleArray:[String] = ["Facebook", "Twitter", "Youtube","Vimeo", "Instagram", "Custom URL", "Linkedin", "pinterest"]
override func viewDidLoad() {
self.socialHandleCollection.delegate = self
self.socialHandleCollection.dataSource = self
// socialHandleCollection.frame.size.height = 130
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return socialHandleArray.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: colvwCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! colvwCell
cell.imgCell.image = UIImage(named: "demo_img.png")
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print(self.socialHandleArray[indexPath.row])
}
}
Любая помощь будет оценена.
Предполагая, что вы используете autoLayout
Первоначально объявите желаемое количество столбцов
Итак, сначала самое главное. Вы должны будете сделать так, чтобы ваш класс соответствовал
UICollectionViewDelegateFlowLayout
. Теперь реализуем функцию —Здесь 5 может быть изменено на количество столбцов, которое вы хотите в каждой строке, и передача того же значения высоты гарантирует, что форма всегда квадратная. И, следовательно, вы можете применить радиус угла, чтобы сделать его круговым.
Теперь двигаемся дальше. В построителе интерфейса нажмите ctrl + click и перетащите
UICollectionView
ограничение высотыUIViewController
(аналогично тому, как вы сделали бы для AUIView
, но делаете это для ограничения)Теперь, когда вы знаете количество элементов, которые вам нужно отобразить внутри вашего
UICollectionView
, Вы можете сделать что-то вроде:Также если вы не изменили направление прокрутки на вертикальное.