UIWindow旋转屏幕出现四个黑框

前言

Xcode、OC
常见解决方法对UIWindow使用clipsToBounds剪切即可,但总有些需求可能导致视图出现在UIWindow之外,需要保留视图的显示,可以参考文本方法实现不剪切的UIWindow。

视图层级

在旋转的时候会出现黑框,我们分别在未旋转和旋转的时候,进行Xcode调试,分析层级。
结果如图:
在这里插入图片描述
在这里插入图片描述
无须多言,明晃晃四个UIView,因此尝试对这四个UIView进行隐藏,看是否能够解决这个问题。

具体解决

viewWillTransitionToSize:withTransitionCoordinator: 是一个 UIViewController 的方法,用于在视图控制器的视图大小发生变化时执行自定义动画和布局调整。这个方法在设备旋转或分屏模式下被调用。可以通过 coordinator 来执行动画和响应过渡。

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context){
        UIWindow * selfWindow = yourWindow; // 自己的winodw
        for (UIView * view in selfWindow.subviews) {
            Class c_a = NSClassFromString(@"UITransitionView");
            Class c_d = NSClassFromString(@"UIDropShadowView");
            if ([view isKindOfClass:c_a]) {
                for (UIView * subView in view.subviews) {
                    if(![subView isKindOfClass:c_d]){
                        for (UIView *subSubView in subView.subviews) {
                            subView.hidden = YES;
                        }
                    }
                }
            }
        }
    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context){}];
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值