iOS 开发,屏幕旋转、旋转屏幕collectionView cell 的自动布局问题

本文介绍了如何在iOS应用中通过自定义导航控制器控制屏幕旋转,仅允许特定UIViewController支持横屏,同时实现了UICollectionView的自动布局以适应屏幕旋转,确保照片全屏展示效果的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


开发过程中,为了视觉美感,有时候我们有禁止屏幕旋转的需求,如下操作

如果是在UINavigationController中装了很多UIViewController,那我们需要集成UINavitationController写一个自己的NavitationControlle,并且在里面加上如下方法。

返回YES表示支持横屏,返回NO表示不支持横屏,下面的例子表示全局除了CScanViewController这个界面可以横屏,其余界面一律不允许横屏

- (BOOL)shouldAutorotate
{
    id currentViewController = self.topViewController;
    if ([currentViewController isKindOfClass:[CScanViewController class]]) {
        return YES;
    }
    return NO;
}


记得有一次做一个摄影论坛的时候,需要将照片全屏展示出来,需要根据照片的横竖旋转屏幕,考虑到cell得复用性,所以选择了collectionView,用masonry实现自动布局

// 注册通知,观察屏幕变化
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFrame:) name:UIDeviceOrientationDidChangeNotification object:nil];

// 屏幕转动,改变cell的frame
- (void)changeFrame:(NSNotification *)notification
{
    _flow.itemSize = CGSizeMake(_collectionView.bounds.size.width, _collectionView.bounds.size.height);
}

使用通知中心可以实现cell 的自动布局


很有用的心得。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值