0

我有一个自定义UIView说它CustomView有一个UICollectionView作为它的子视图。我在 UITableView Prototype Cell 中添加了这个 customView,并将所有四个(顶部、底部、左侧、右侧)边缘固定到标准距离TableViewCellcontentView.

现在我想设置UICollectionView部分昆虫。在我得到这个方法- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section时,无论我是在 4s、5s、6 或 6 plus 还是 iPad 上运行它UICollectionView.bounds.width,我总是得到。600这很烦人,我无法insectUICollectionView昆虫部分设置正确的值。任何帮助都会很棒。谢谢

这是我的代码。

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {

  NSInteger number = [self collectionView:collectionView numberOfItemsInSection:section];
  NSIndexPath *firstIndexPath = [NSIndexPath indexPathForItem:0 inSection:section];
  CGSize firstSize = [self collectionView:collectionView layout:collectionViewLayout sizeForItemAtIndexPath:firstIndexPath];
  NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:number - 1 inSection:section];
  CGSize lastSize = [self collectionView:collectionView layout:collectionViewLayout sizeForItemAtIndexPath:lastIndexPath];
  UIEdgeInsets  insect =  UIEdgeInsetsMake(0, (collectionView.bounds.size.width - firstSize.width) / 2,
                                           0, (collectionView.bounds.size.width - lastSize.width) / 2);

  return insect;

}

这是我的 CustomView 的初始化,其中 collectionView 作为子视图

- (void) initilize {
  UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc ] init];
  flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
  self.collectionView = [[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout: flowLayout];
  self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  [self.collectionView registerClass:[PickerCollectionViewCell class] forCellWithReuseIdentifier:@"PickerCollectionViewCell"];
  self.collectionView.delegate = self;
  self.collectionView.dataSource = self;
  self.collectionView.backgroundColor = [UIColor clearColor];
  self.collectionView.showsHorizontalScrollIndicator = NO;
  self.collectionView.allowsMultipleSelection = YES;
  [self addSubview:self.collectionView ];
  self.backgroundColor = [UIColor clearColor];
}

附上我的故事板的两张图片。

在此处输入图像描述

在此处输入图像描述

在第二张图片 pickerView 中是我的 CustomView,其中包含UICollectionView.

任何帮助都会很棒。

4

1 回答 1

1

宽度等于 600,因为您在 UIView 更新当前屏幕的约束之前使用它。您可以在方法中检查 UICollectionView 框架- (void)viewDidLayoutSubviews,您将收到实际值。
这里有两个选项:
1)您可以使昆虫计算独立于 UICollectionView 框架

2)您可以在触发后重新计算集合视图布局viewDidLayoutSubviews并重绘 UICollectionView
(我宁愿第一个)

于 2016-01-25T22:16:44.887 回答