iOS10.0以下のバージョンで「ホワイトスクリーン」が表示されます.

3317 ワード

これは最近开発プロジェクトの中で奇妙な问题に出会って、テストは私のインストールパッケージのインストール时に白いスクリーンが现れたと言って、ネットをロードすることができて、UIを表示することができなくて、开発の中でシミュレータと自分の携帯电话を使ってこのような白いスクリーンの问题が现れていないため、问题に出会ってまだ愚かで、テストの携帯电话を持ってXcodeの上でデバッグして、すべて正常に运行して、UIを表示しないで、そこで携帯电话のバージョンの问题かどうかを考えてテスト携帯はiOS 9です。3のシステム、私のは10.3で、これはシステムバージョンが2つの携帯電話で実行結果が異なる可能性が高いが、何が原因で実行結果が異なるのか、どのコードが互換性がないのか、考え込んでいて、長い間考えても見当がつかなかった。


そこで私はテストプロジェクトをかけて、3級のコントローラからデバッグを始めて、結果は当選して、プロジェクトの中のtabBarは弧の角があるため、カスタマイズのピクチャーを使って、これは白いスクリーンに影響しないで、影響するのはカスタマイズのtabBarが影の効果を持って、そこでUIImageViewに影を加えました:

imageView.layer.shadowColor = RGB(19, 30, 36).CGColor;
        imageView.layer.shadowOffset = CGSizeMake(0, 0);
        imageView.layer.shadowOpacity = 0.5;
        imageView.layer.shadowRadius = 10.0;

        CGRect rect = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
        UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
        CGContextFillRect(context, rect);
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        [self setBackgroundImage:img];
        [self setShadowImage:img];

問題はこの影付きコードにある、iOS 10.0以下ではカスタムtabBarがシャドウ効果を加えると白画面になるので、プロジェクトに影響を及ぼさず設計にも影響を及ぼさないように、ここでシャドウを付ける場合はシステムバージョンによって判断する、iOS 10.0以下のバージョンではシャドウ機能は追加されません。tabBarをカスタマイズし、imageViewコントロールを追加する、コントロールの高さがtabBarの高さより大きい場合、iOS 10.0以上はtabBar上のシステム細線を表示する、iOS 10である.0以下はシステム細線、細線除去コードを表示します。

[self.tabBar setShadowImage:[UIImage new]];