開発メモ

開発関係のメモをいろいろと。たぶん。

【iOS8対応】UIViewControllerの角を丸める処理のまとめ

開発環境

環境 情報
Xcode 6.0.1 (6A317)
Swift 1.0
iOS 7.0 -
Date 2014/09/30

概要

iOS7までの方法で角を丸めて、iOS8で実行するとこんな感じになる。

f:id:see_ku:20140930105202p:plain

iOS8対応の処理をするとこうなる。

f:id:see_ku:20140930105215p:plain

※影が全体に回って目立たなくなっただけとも言う

実際の処理

RoundedCornerViewController.swift

実際の角を丸める処理はこんな感じ。

 // ViewControllerの角を丸める
    func cornerRounding(radius: CGFloat) {

        // UINavigationControllerに対応
        var vi = view
        if navigationController != nil {
            vi = navigationController!.view
        }

        // iOS7はこれだけでok
        vi.layer.cornerRadius  = radius
        vi.layer.masksToBounds = true
        vi.superview?.backgroundColor = UIColor.clearColor()

        // iOS8の場合、以下の処理も必要
        if let sv = vi.superview {
            sv.clipsToBounds = false
            sv.layer.shadowPath = nil
        }
    }

superviewへの処理が、少し追加になっただけ。さり気なくUINavigationControllerへの対応も追加してある。

参考資料

iphone - iOS: Why do I have white, rounded corners on my modal view? - Stack Overflow
http://stackoverflow.com/questions/12965560/ios-why-do-i-have-white-rounded-corners-on-my-modal-view

ソースコード

全体のソースコードはこちら。

See_Ku / RoundedCornerModalTips — Bitbucket
https://bitbucket.org/See_Ku/roundedcornermodaltips