在轮换

时间:2016-11-03 04:24:35

标签: ios objective-c uicollectionview uicollectionviewcell uicollectionviewlayout

所以我正在开发一个属于ePub框架的应用程序。该应用程序将阅读器嵌入其视图中,并允许用户通过滑动滚动缩放和页面。我试图修改它,以便ePub列表进入集合视图作为显示epubs封面图像的单元格。我可以为flowlayout创建单元格并使用框架边界我可以创建单元格,但是当我尝试从纵向旋转到横向时,它们不会调整大小和位置。我的细胞代码是:

//Set Collection View Cell Size and Orientation
-(CGSize)
    collectionView:(UICollectionView *) collectionView
    layout:(UICollectionViewLayout*)collectionViewLayout
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

//Set Landscape size of cells
if(UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)){
    CGFloat cellWidth =  [[UIScreen mainScreen] bounds].size.width;
    CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-350;
    NSLog(@"Is Landscape");
    return CGSizeMake(cellWidth, cellHeigt);
}
//Set Potrait size of cells
else{
    NSLog(@"Is Portrait");
    CGFloat cellWidth =  [[UIScreen mainScreen] bounds].size.width-80;
    CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-240;
    return CGSizeMake(cellWidth, cellHeigt);
}
}

我使用此代码来定位它们:

//Collection View Cell Position
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {

if(UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)){
     return UIEdgeInsetsMake(0,10,0,20);  // top, left, bottom, right
 }
 else{
     return UIEdgeInsetsMake(0,20,0,20);  // top, left, bottom, right
 }
}

当我旋转设备时,单元格顶部边界越过框架。

请帮忙,我该如何动态更新框架?

1 个答案:

答案 0 :(得分:0)

您需要在轮换时刷新收藏。尝试以下代码:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [yourCollectionview performBatchUpdates:nil completion:nil];
}