在collectionView中创建形状cellForItemAtIndexPath - 目标C.

时间:2014-03-31 00:12:52

标签: ios objective-c uicollectionview

我正在开发一个我的项目,根据从MySQL数据库返回的数据填充5个项目。我的问题是我需要根据返回的数据将每个项目设为圆形或方形。

运行以下内容时:

UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
_collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];

[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[_collectionView setBackgroundColor:[UIColor whiteColor]];
CGRect frame = [_collectionView frame];
[_collectionView setFrame:CGRectMake(10,
                                         5,
                                         300,
                                         frame.size.height - 100)];
[self.view addSubview:_collectionView];

..调用创建正方形的自定义布局。我的问题是如何在细胞创建功能中使其成为正方形或圆形?

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
 .... do my creation of circle or square in here 
}

而不是在这里:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{    
    return CGSizeMake(50, 50);
}

2 个答案:

答案 0 :(得分:2)

您可以继承UICollectionViewCell并将绘图代码放在子类中drawRect:

创建实际课程后,您可以通过执行类似

的操作来使用它
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MyCustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier";
    // set custom properties here
    return cell;
}

答案 1 :(得分:1)

无需让所有人疯狂并将其分类。

  1. 将您的单元格设计为方形(默认值)。
  2. 在sizeForRowAtIndex中(我在手机中打字,所以我不记得确切的名字),按照你的逻辑来知道何时制作一个圆圈。
  3. 当你需要制作一个圆圈时,只需要做cell.layer.cornerRadius = cell.frame.size.width / 2; (这将使它成为一个圆圈)。
  4. 否则,重置方块(执行与上面相同的操作,但将半径设置为0)。
  5. 这种方法将保持代码模块化