我开发的应用程序中有一个UICollectionView。 UICollectionView中包含不同类型的UICollectionViewCell。对于其中一个Cell,我需要为不同的方向设置不同的布局。
在纵向视图中,单元格应具有以下布局
对于风景我需要这种布局
最好的方法是什么?此外,我还必须在iOS 7设备上完成这项工作。请帮忙。
由于
答案 0 :(得分:2)
这将是我的逻辑:
再添加一个collectionViewCell用于具有不同reuseIdentifier的横向布局。
声明一个BOOL变量,如:
BOOL isLAndscape;
在执行部分。默认情况下,bool值为NO
或False
。
如果方向改变,请检查通知! 您可以在viewDidLoad中设置This Thing,如
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(OrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
每当您的设备的方向更改 OrientationDidChange 时,您可以按照每个方向执行任何操作。在您的情况下,如果方向是横向,则isLAndacape = YES;然后重新加载collectionView。
-(void)OrientationDidChange:(NSNotification*)notification
{
UIDeviceOrientation Orientation=[[UIDevice currentDevice]orientation];
if(Orientation==UIDeviceOrientationLandscapeLeft || Orientation==UIDeviceOrientationLandscapeRight)
{
isLAndscape=YES;
[collectionVIew reloadData];
}
else if(Orientation==UIDeviceOrientationPortrait)
{
isLAndscape=NO;
[collectionVIew reloadData];
}
}
在collectionView的cellForItemAtIndexPath
方法中,添加bool islAndacape
的条件检查并更改reuseIdentifier。
NSString *reuseIdentifier;
if(isLAndscape)
{
reuseIdentifier=@"landscapeReuseId";
}
else
{
reuseIdentifier=@"portraitReuseId";
}
多数民众赞成!!
<强>声明!!!这是我的逻辑。我没试过。检查它是否有效。
答案 1 :(得分:0)
您需要在横向旋转上更改collectionViewLayout