KVS17
@KVS17

Отобразить collectionView снизу-вверх(в гору)?

Контроллер должен отображать данные снизу-вверх, что собственно он и делает. Реализовано так
override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.collectionView!.transform = CGAffineTransformMake(1, 0, 0, -1, 0, 0)
        takeTotalMessages()
        
    }


Ячейки то же преобразованы transform
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ChatCollectionViewCell
        cell.transform=self.collectionView!.transform

        let message = dataSource[indexPath.row]
        
        cell.nameNick?.text = message.nickname
        cell.textMess?.text = message.text
        
        return cell
    }

Описание ChatCollectionViewCell
class ChatCollectionViewCell: UICollectionViewCell {
    
    @IBOutlet weak var nameNick: UILabel?
    @IBOutlet weak var textMess: UILabel?
        
}


Проблема в том что при отображении первых данных не срабатывает cell.transform=self.collectionView!.transform и данные перевернуты при запуске отображается как на скриншете, если прокрутить вверх и вернуться к исходному месту то все как надо. Да и новые данные которые подгружаются отображаются как надо, проблема только в отображении первых данных.

7222940048ec45b8a1eef7e909db84be.gif
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ответы на вопрос 2
ManWithBear
@ManWithBear
Swift Adept, Prague
Чего вы хотите добиться?

UPD.
- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:lastRow inSection:lastSection] atScrollPosition: UICollectionViewScrollPositionBottom animated:NO];
}

UPD2. Если всё таки вам хочется делать бессмысленные трансформации, то делайте это в
- collectionView:willDisplayCell:forItemAtIndexPath:
Ответ написан
@rsi
software engineer
Во первых, присоединяюсь к вопросу ManWithBear, но давайте играть в телепатов. Видимо вы перевернули collectionView что бы добавлять новые ячейки в начало таблицы, а появлялись они внизу, это крайне хреновое решение.

Во вторых такое `cell.transform=self.collectionView!.transform` лучше всего делать не в `cellForItemAtIndexPath ` в классе `ChatCollectionViewCell` вы ведь его просто так создали, верно.

В третьих сделайте константу `let transform = CGAffineTransformMake(1, 0, 0, -1, 0, 0)` и присваивайте ее `self.collectionView!.transform = transform ` и `cell.transform=transform `
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы