В 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
вызывается только один раз. Я ожидаю, что он вызывается каждый раз, когда размер окна изменяется (само представление коллекции изменяет размер при изменении размера окна).
Что я делаю неправильно?