我被困在uicollectionview单元格框架中 我想做的是,
在iPad的横向模式中我想显示3个细胞, 在肖像2细胞中。
当我在方法- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
中编写框架代码时
它不会影响框架的大小。
我通过应用调试器检查它是否会使用此方法。 但它的到来又恢复了它的大小。
默认情况下,我必须以横向方式启动我的应用程序,然后在需要时以纵向方式启动。
以下是它在风景中的表现
这里的细胞是如何看待肖像的
这是我的代码
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
//return [self.cellSizes[indexPath.item] CGSizeValue];
if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
{
return CGSizeMake(100, 100);
}
return CGSizeMake(200, 200);
}
我传递的是什么价值,框架根本没有变化。 我没有在任何地方传递任何其他帧值。
我想首先给单元格框架赋予硬编码值,然后进行动态处理。 但我只是停留在第一位。 任何人都可以帮助我。
提前致谢。
答案 0 :(得分:0)
对于动态集合视图单元,您可以使用这样的集合视图方法。
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection: (NSInteger)section{
return [_elements count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"cell";
MosaicCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
MosaicData *data = [_elements objectAtIndex:indexPath.row];
cell.mosaicData = data;
float randomWhite = (arc4random() % 40 + 10) / 255.0;
cell.backgroundColor = [UIColor colorWithWhite:randomWhite alpha:1];
return cell;
}
有关详细信息,您可以看到此示例。这是您需要的完美示例 https://github.com/betzerra/MosaicLayout
答案 1 :(得分:0)
我面临类似的问题,所以基本上你应该在你的视图控制器中实现UICollectionViewDelegateFlowLayout,否则设计一个自定义collectionviewcell并在你的视图控制器中注册,它肯定会工作。试试吧。
在我的情况下 我通过继承UICollectionViewCell添加了xib并相应地设计它,它可以工作,所以你可以尝试。
答案 2 :(得分:0)
当方向发生变化时,您需要重新加载集合视图。因此将调用CGRect size方法让单元格重新创建单元格。
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
// do something after rotation
[_collectView reloadData];
}
添加此方法并重新加载您的集合视图,以便调用- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
并更改大小。
感谢