Изменение размера элементов в представлении коллекции в соответствии с размером окна - PullRequest
0 голосов
/ 08 апреля 2020

В NSCollectionView я хочу изменить размер элементов автоматически при изменении размера окна.

Создание элемента:

ZoomSDKNormalVideoElement* videoItem = [[ZoomSDKNormalVideoElement alloc] initWithFrame:NSMakeRect(0, 0, 200, 200)];
ZoomSDKVideoContainer* videoContainer = [[[ZoomSDK sharedSDK] getMeetingService] getVideoContainer];
[videoContainer createVideoElement:&videoItem];
videoItem.userid = userID;
[_videoArray addObject:videoItem];

Реализация NSCollectionViewDataSource:

- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
{
    ZMSDKThumbnailCollectionViewItem* item = [collectionView makeItemWithIdentifier:@"ZMSDKThumbnailCollectionViewItem" forIndexPath:indexPath];
    ZoomSDKVideoElement* thumbnailView = [_videoArray objectAtIndex:indexPath.item];
    thumbnailView.videoView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
    [item.view addSubview:thumbnailView.videoView];
    return item;
}

- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView
{
    return 1;
}

- (NSInteger)collectionView:(NSCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return _videoArray.count;
}

Реализация NSCollectionViewDelegateFlowLayout:

- (NSSize)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat width = self.view.frame.size.width - 10;
    CGFloat height = self.view.frame.size.height - 10;
    return NSMakeSize(width, height);
}

- (CGFloat)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    return 0;
}

- (CGFloat)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
    return 0;
}

У меня две проблемы:

  • Строка thumbnailView.videoView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable; не имеет никакого эффекта. Автоматическое изменение размера не выполняется.

  • Метод sizeForItemAtIndexPath вызывается только один раз. Я ожидаю, что он вызывается каждый раз, когда размер окна изменяется (само представление коллекции изменяет размер при изменении размера окна).

Что я делаю неправильно?

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