Отобразить CollectionViewCell в исходное положение - PullRequest
0 голосов
/ 30 октября 2019

Я создал ячейку представления коллекции с файлом Xib. И у меня есть только одна ячейка, но эта ячейка отображается в центре collectionView. Я хочу отобразить ячейку в начальной позиции collectionView.

Я исправил contentInset в viewDidLoad и загрузке xib-файла ячейки здесь,

_listCollectionView.contentInset = UIEdgeInsetsMake(0 , 0, 0, 0);  

И мой размер ячейки

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


    return  CGSizeMake(156,140);
}

Ячейка отображается какэто.

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

В функции collectionView: cellForItemAtIndexPath: я произвел такие изменения.

Здесь я просто зафиксировал свою коллекцию x исходного положения в 0 после загрузки ячейки.

deviceCell= (DeviceCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"DeviceCollectionViewCell" forIndexPath:indexPath];

if (listArray.count == 1) {//Here i fixed the my cell x origin position
    CGRect frameRect = deviceCell.frame;//Copy cell frame
     frameRect.origin.x = 0;//Set cell origin.x
     deviceCell.frame = frameRect;//Reset frame
}
0 голосов
/ 30 октября 2019

Мне не очень понятен ваш вопрос, но я думаю, что вы имеете в виду, чтобы выровнять элемент collectionnView с представлением. Вы должны использовать UICollectionViewLayoutAttributes или layoutAttributesforElements для достижения этой цели. Взгляните на приведенный ниже код и сделайте, если хотите, в Objective c.

-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];

    CGFloat leftMargin = self.sectionInset.left; //initalized to silence compiler, and actaully safer, but not planning to use.
    CGFloat maxY = -1.0f;

    //this loop assumes attributes are in IndexPath order

    for (UICollectionViewLayoutAttributes *attribute in attributes) {
    if (attribute.frame.origin.y >= maxY) {
        leftMargin = self.sectionInset.left;
    }


     attribute.frame = CGRectMake(leftMargin, attribute.frame.origin.y, 
     attribute.frame.size.width, attribute.frame.size.height);

     leftMargin += attribute.frame.size.width + self.minimumInteritemSpacing;
     maxY = MAX(CGRectGetMaxY(attribute.frame), maxY);
    }

     return attributes;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...