了解在横向模式下使用子视图(UICollectionView)调整UIView的大小

时间:2015-11-19 23:38:00

标签: ios objective-c uiview

enter image description here

"我的视图" 有一个子视图( UICollectionView )。子视图大小为纵向模式0,0,375,50。

当我启动应用程序时。以下是结果。

横向模式下的窗口大小为0,0,375,667。

"我的观点"在横向模式下调整大小,子视图也会调整大小。但子视图大小仍为0,0,375,50。

我期待subview.bounds返回0,0,667,50。

以下答案说使用边界,但对我来说它不起作用。查看调整大小但是边界不正确。

Reporting incorrect bounds in landscape Mode

1 个答案:

答案 0 :(得分:1)

修复约束,感谢this answer by Followben您可以根据视图方向重新计算并将其除以数组计数

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{    
    // Adjust cell size for orientation
    if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
        return CGSizeMake(170.f, 170.f); //Make sure you calculate This
    }
    return CGSizeMake(192.f, 192.f); //Make sure you calculate This
}

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