2013-11-25 2 views
1

http://postimg.org/image/6bws3catp/Различного размера collectionviewcells

Как вы можете видеть на картинке, мне нужно что-то, что дает мне возможность изменения размера ячейки в зависимости от длины текста, который содержит.

Я пытаюсь сделать это с помощью UICollectionview, но ячейки всегда имеют одинаковый размер, и если я попытаюсь изменить размер игры с параметрами frame.size и location, свиток сходит с ума.

Может быть UICollectionView не лучший выбор ...

Большое спасибо

EDIT:

Из-за ваши ответы мои клетки способны динамически изменять их размер, но на полях не ведут себя так, как я ожидал.

Границы ячеек зависит всегда от самой большой ячейки той же строки

http://postimg.org/image/3scthf9rv/

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{ 
return 6; 
} 

У меня есть это реализовать, чтобы установить свою маржу значение между ячейками в 6 очков, но, возможно, это только работает, когда у вас есть одна ячейки в каждой строке в вертикальном зрении коллекции ..

Еще раз спасибо за вашу помощь

ответ

0
  1. Вы можете проверить https://github.com/bryceredd/RFQuiltLayout. Выглядит как-то, что вы можете использовать для этого ...

  2. Вы можете переопределить следующий метод и вернуть объект CGSize, который определяет размер, который вы хотите использовать для каждой ячейки. Используя этот метод, вы можете на самом деле есть каждая ячейка быть разного размера:

    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
    

Пример:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return CGSizeMake(100, 100); 
} 

Ваше мнение контроллер должен быть делегатом UICollectionViewDelegateFlowLayout для того, чтобы этого метода называться. Поэтому не забудьте добавить это объявление делегата в файл .h файла вашего вида, например:

@interface MyViewController() <UICollectionViewDelegateFlowLayout> 
+0

Большое спасибо! Не могли бы вы помочь мне с новой проблемой маржи? – Andoxko

+0

@ AndoniMuruamendiaraz в чем проблема? –

+0

Я отредактировал вопрос, чтобы объяснить это лучше, или лучше создать новый вопрос?Извините, что я новичок здесь :) – Andoxko

0

UICollectionView - правильный выбор. Вам просто нужно настроить атрибуты макета потока.

Читать Customizing the Flow Layout Attributes

В частности, вам нужно будет реализовать метод Collection View Делегирование:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // In this method you can calculate the size of the string for each cell 
    UIFont *font = // font to create the text for each cell 
    NSString *string = // text string for each cell 
    CGSize size = [string sizeWithFont]; 
    return size; 
} 
+0

Спасибо большое! Ваша помощь была очень полезной. Не могли бы вы помочь мне с запасом? – Andoxko

Смежные вопросы