2017-11-25 11 views
-1

丸い角と影を持つカードのようなビューをデザインする必要があります。私は1つのコンテナビューを持っており、その内部に別のビューがあります。しかし、外側のコンテナビューのコーナー半径を適用しているとき、内側のビューを持つ領域を除いて、半径が設定されています。私はそれをclipToBounds = trueにしていれば、それは丸みを帯びていますが、影は来ていません。だからここでPLZ助けてください。ここでビューが丸くならない

は、私は私の問題のために下の画像を添付しています私のコード

containerView.layer.masksToBounds = false 
    containerView.layer.shadowColor = UIColor.black.cgColor 
    containerView.layer.shadowOpacity = 0.5 
    containerView.layer.shadowOffset = CGSize(width: -1, height: 1) 
    containerView.layer.shadowRadius = 5 
    containerView.backgroundColor = UIColor.white 
    containerView.layer.cornerRadius = 20 

です。 View Image

+0

あなたのコードがどこにあるか分かりませんか? –

+0

上記のコードを追加しました。あらかじめご了承ください – Hyder

答えて

0

スーパービューとそのサブビューの2つのビューがあり、目標が矛盾しています。

  • 一方で、スーパービューの角の半径がそのサブビューに影響するようにします。スーパービューがその境界にマスクされている場合にのみ起こります。

  • 一方、スーパービューの影が表示されるようにします。これは、スーパービューがその境界にのマスクを持たない場合にのみ起こります。

あなたが望むのは論理的に不可能です。

解決策は簡単です。 3回ビューを使用してください!シャドー作成とクリッピングの作業を2つのビューに分けます。

  • 最も外側のビューにはコーナーの半径と影があり、境界にマスクしません。これはシャドウメーカーです。

  • 次のビューはそのサブビューです。それはまったく同じサイズで、でもに角の半径があり、です。これはクリッパーです。

  • 次のビューはコンテンツ、サブビューのサブビューです。それはコーナーの半径がそれに影響を与えるように2番目のビューでマスクされます。

関連する問題