gpt4 book ai didi

ios - 在方向上更改 UICollectionViewCell 布局

转载 作者:可可西里 更新时间:2023-11-01 05:51:20 25 4
gpt4 key购买 nike

我正在开发一个应用程序,其中有一个 UICollectionView。 UICollectionView 中有不同类型的 UICollectionViewCells。对于其中一个单元格,我需要针对不同的方向进行不同的布局。

在纵向 View 中,单元格应具有以下布局

enter image description here

对于横向,我需要这种布局

enter image description here

最好的方法是什么?此外,我还必须在 iOS 7 设备上进行这项工作。请帮忙。

谢谢

最佳答案

这将是我的逻辑:

再添加一个collectionViewCell,用于横向布局,使用不同的reuseIdentifier。

声明一个 BOOL 变量,例如:BOOL isLAndscape;

在实现部分。默认情况下,bool 值为 NOFalse

然后检查方向改变时的通知!您可以像这样在 viewDidLoad 中设置 This Thing

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(OrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];

每当您的设备方向发生变化时,OrientationDidChange 都会调用,您可以根据方向做任何您想做的事情。在您的情况下,如果方向是横向,则为 LAndacape=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";
}

就是这样!

免责声明!!!这是我的逻辑。我没有尝试过这个。检查它是否有效。

关于ios - 在方向上更改 UICollectionViewCell 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34692441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com