#ios #swift
Вопрос:
У меня есть ячейка collectionview, и мне нужна ячейка фильтрации.
Я пытаюсь сделать высоту ячейки равной 0. но это не работает.
это мой код.
контроллер представления расширения: UICollectionViewDataSource, UICollectionViewDelegate{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.numberOfCell
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? data else {
return UICollectionViewCell()
}
let set1 = CoreDataManager.shared.getSetting(idx: indexPath.row).set1
if(set1){
return cell
}
else{
let none = collectionView.dequeueReusableCell(withReuseIdentifier: "none", for: indexPath)
none.frame.size.width = 100
none.frame.size.height = CGSize(width: 0, height: 100).width
return none
}
}
}
Комментарии:
1. Вы не фильтруете представление коллекции , изменяя размер ячейки
.zero
, вы фильтруете ячейку, обновляя источник данных, массив, который вы используете, чтобы указать, сколько разделов, сколько строк в разделе, какую модель использовать в cellForItemAt…2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Если вам нужно установить размер ячейки, вам нужно соответствовать UICollectionViewDelegateFlowLayout, реализовать sizeForItemAt и указать его размер.
extension viewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 100, height: 0)}
}
еще одно решение, чтобы ограничить высоту для представления внутри вашей ячейки с идентификатором «ячейка» и присвоить ему значение 0, прежде чем возвращать ячейку в cellForItemAt.