Как установить размер прототипа UICollectionViewCell
У меня есть UICollectionView в IB с кучей разных прототипов ячеек.
Я попытался дать каждой ячейке свой собственный размер в IB, чтобы при создании экземпляра с помощью dequeueReusable... он имел такой размер. Однако я обнаружил, что не имеет значения, какие у вас настройки в IB для вашей ячейки, ваш коллекционный вид использует свой собственный размер ячейки для всех ячеек, используемых внутри него.
Это ошибка? Если нет, то каков наилучший способ установить нестандартный размер для всех ваших ячеек?
Я также попробовал:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
NSString* cellIdentifier = self.cellIdentifier;
ImageCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:self.cellIdentifier forIndexPath:indexPath];
return [cell sizeOfCell];
}
Но по какой-то причине приложение вылетает при отключении ячеек в этой функции.
Я вложил в подкласс все ячейки прототипа и имею функцию, которая заставляет их возвращать свой собственный размер. Есть ли другой способ создать ячейку с идентификатором, который вы дали ей в IB?
1 ответ
Размер ячеек (для представлений коллекции и табличных представлений) в IB предназначен только для макета, он не влияет на размер во время выполнения. Вы должны реализовать метод UICollectionViewDelegateFlowLayout collectionView:layout:sizeForItemAtIndexPath: для возврата правильного размера для каждого элемента.