これは私を襲っています。私はuiviewを持っています(それを "親"と呼びます)。そのビューの最新のサブビューはUIImageView(「子」と呼びます)で、そのフレームは「親」境界の全体を占めています。
「親」ビューの角を丸くし、ドロップシャドウを設定します。いつものように「親」のCALayer
でこれを行います。
[[parent layer] setShadowOffset:CGSizeMake(5, 5)];
[[parent layer] setShadowRadius:6];
[[parent layer] setShadowOpacity:0.4];
[[parent layer] setCornerRadius:6];
_
これは影を正しく示していますが、コーナーを丸くしません。
ここはキッカーです:
「子」イメージビューが「親」ビューで丸みを帯びた角を隠すだけで、四角形全体を占め、親ビューに基づくクリッピングが角を取得しますが、影からマスクします。 #3が機能しないのかわからない。
何が行方不明ですか?私はこれを見つめて明白なものを見下ろしていますか?
ありがとう。
(衝撃的には、タグ "roundedCorners-dropshadow"はすでに存在しています。驚くほど。)
2つのネストされたビューが必要になると、内側の1つの設定が丸みを帯びて丸みを帯びた角とクリッピング、シャドウを持つ外観(したがってクリッピング)を必要とします。あなたの場合、内側と外観はおそらく「子供」と「親」になるでしょうが、私はあなたがこれらの見解の正しいクリッピング値を設定しなかったと思いますか?
答えを参照してください maskstobounds =はい、Calayer Shadowを妨げるのはなぜですか? 。
通常は丸みを帯びたコーナーを持つようにClipStoboundsを設定する必要がありますが、シャドウを維持したいので、シャドウのコーナーを丸くする必要があります。ベジエパスを使ってシャドウパスを設定しようとしましたか? ClipStobounds/MaskStoBoundsをデフォルトの、いいえに保存します。何かのようなもの:
[[parent layer] setCornerRadius:6.0f];
[[parent layer] setShadowPath:
[[UIBezierPath bezierPathWithRoundedRect:[parent bounds]
cornerRadius:6.0f] CGPath]];
_
Corner Radius for ImageViewのシャドウレイヤーが必要な場合は、1ポイントマージンを持つサブビューとしてビューをビューに表示することです。
imgBrandLogo.backgroundColor = UIColor.blue
imgBrandLogo.layer.cornerRadius = imgBrandLogo.frame.height/2
imgBrandLogo.clipsToBounds = true
viewBrandLogo.layer.shadowColor = UIColor(rgb:0x262626,alpha:0.24).cgColor
viewBrandLogo.layer.shadowOffset = CGSize(width: 0, height: 1)
viewBrandLogo.layer.shadowOpacity = 1
viewBrandLogo.layer.shadowPath = UIBezierPath(roundedRect:imgBrandLogo.bounds , cornerRadius: imgBrandLogo.frame.height/2).cgPath
viewBrandLogo.backgroundColor = UIColor.clear.withAlphaComponent(0.0)
_
あなたはそれが丸みを帯びたコーナーを持っているように、子供UiImageViewの境界を設定しようとしましたか?おそらくそれはコンテナビューの影を上書きすることはありません。ただの考え、それがうまくいくかどうかわからない。