使UITableViewCell包含一个UICollectionView

时间:2017-10-04 14:31:21

标签: ios uitableview uicollectionview autolayout

我遇到了一个问题,让uitablveiewcell包含一个uicollectionview。tableview设置是:

 _tableViewOfSend = ({
        TPKeyboardAvoidingTableView *tableView = [[TPKeyboardAvoidingTableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
        tableView.backgroundColor = [UIColor whiteColor];
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.estimatedRowHeight = 200;
        tableView.rowHeight = UITableViewAutomaticDimension;
        [tableView registerClass:[TopicWriteTextCell class] forCellReuseIdentifier:kTextCell];
        [tableView registerClass:[TopicWriteImageCell class] forCellReuseIdentifier:kImageCell];
        [self.view addSubview:tableView];
        tableView;
    });

我添加了一些约束:

[_tableViewOfSend autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:_navBar withOffset:1];
[_tableViewOfSend autoPinEdge:ALEdgeLeft toEdge:ALEdgeLeft ofView:self.view];
[_tableViewOfSend autoPinEdge:ALEdgeRight toEdge:ALEdgeRight ofView:self.view];
[_tableViewOfSend autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:self.view];

tableviewcell还为自我调整添加了约束。在我的演示中,我只是用于呈现图像。所以我在其中添加了一个UICollectionView。

UICollectionViewLeftAlignedLayout *layout = [[UICollectionViewLeftAlignedLayout alloc] init];
layout.minimumLineSpacing = 5;
layout.minimumInteritemSpacing = 5;

CGFloat widthOfScreen = [UIScreen mainScreen].bounds.size.width;
CGFloat cellWidth =(widthOfScreen - 20 - 5 * 2) / 3;
NSLog(@"cell height%f", cellWidth);
layout.itemSize =  CGSizeMake(cellWidth, cellWidth);

_imageCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, widthOfScreen, cellWidth*2 + 10) collectionViewLayout:layout];
_imageCollectionView.delegate = self;
_imageCollectionView.dataSource = self;
_imageCollectionView.scrollEnabled = NO;
_imageCollectionView.backgroundColor = [UIColor colorWithRed:0.6 green:1 blue:0.6 alpha:0.5];

[_imageCollectionView registerClass:[TopicWriteImageCCell class] forCellWithReuseIdentifier:kImageCellIndentify];
[self.contentView addSubview:_imageCollectionView];

并添加UICollectionView的约束:

[_imageCollectionView autoPinEdge:ALEdgeTop toEdge:ALEdgeTop ofView:self.contentView];
[_imageCollectionView autoPinEdge:ALEdgeLeft toEdge:ALEdgeLeft ofView:self.contentView withOffset:10];
[_imageCollectionView autoPinEdge:ALEdgeRight toEdge:ALEdgeRight ofView:self.contentView withOffset:-10];
[_imageCollectionView autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:self.contentView];

我只是将itemsize设置为固定值。 UICollectionViewCell只添加一个ImageView。并添加左/上/右/下限制。项目编号是5.在我看来,我已经修复了itemsize,并添加了所有需要的约束,它应该显示5个具有正确高度的项目。但只有3个项目,高度不对。看来细胞没有自我调整大小。

有人可以帮忙吗?

0 个答案:

没有答案