UICollectionView边界宽度始终为600

时间:2016-01-25 16:25:05

标签: ios uitableview uiscrollview uicollectionview uiedgeinsets

我有一个自定义UIViewCustomView,其UICollectionView作为其SubView。我已将此customView添加到UITableView原型单元格中,并将所有四个(顶部,底部,左侧,右侧)边缘与TableViewCell contentView一起缩放到标准距离。

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

这是我的代码。

- (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的initlize,它将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];
}

附件也是我的故事板的两张图片。

enter image description here

enter image description here

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

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

宽度等于600,因为您在UIView更新当前屏幕的约束之前接受它。您可以使用- (void)viewDidLayoutSubviews方法检查UICollectionView框架,您将收到实际值 这有两个选择:
1)您可以独立于UICollectionView框架进行昆虫计算 要么
2)您可以在viewDidLayoutSubviews触发并重绘UICollectionView时重新计算集合视图布局 (我宁愿第一个)