web-dev-qa-db-ja.com

画像ビューがその限界に拡張されたレイヤーにChernRadiusとShadowを設定できませんか?

これは私を襲っています。私はuiviewを持っています(それを "親"と呼びます)。そのビューの最新のサブビューはUIImageView(「子」と呼びます)で、そのフレームは「親」境界の全体を占めています。

「親」ビューの角を丸くし、ドロップシャドウを設定します。いつものように「親」のCALayerでこれを行います。

[[parent layer] setShadowOffset:CGSizeMake(5, 5)];
[[parent layer] setShadowRadius:6];
[[parent layer] setShadowOpacity:0.4];    
[[parent layer] setCornerRadius:6];
 _

これは影を正しく示していますが、コーナーを丸くしません。

ここはキッカーです:

  1. 「子」イメージビューを削除したり、それを縮小したら、「親」ビューの全体の境界を占有しないように、丸みを帯びたコーナーとシャドウを親に正しく取得します。
  2. 「親」ビューで「子」を一人でまとめると「クリップスタウウンド」を設定した場合は、角を正しく取得します。しかし、今シャドウが行った。
  3. childのレイヤーのコーナー半径を設定すると、効果がないようです。

「子」イメージビューが「親」ビューで丸みを帯びた角を隠すだけで、四角形全体を占め、親ビューに基づくクリッピングが角を取得しますが、影からマスクします。 #3が機能しないのかわからない。

何が行方不明ですか?私はこれを見つめて明白なものを見下ろしていますか?

ありがとう。

(衝撃的には、タグ "roundedCorners-dropshadow"はすでに存在しています。驚くほど。)

18
Ben Zotto

2つのネストされたビューが必要になると、内側の1つの設定が丸みを帯びて丸みを帯びた角とクリッピング、シャドウを持つ外観(したがってクリッピング)を必要とします。あなたの場合、内側と外観はおそらく「子供」と「親」になるでしょうが、私はあなたがこれらの見解の正しいクリッピング値を設定しなかったと思いますか?

答えを参照してください maskstobounds =はい、Calayer Shadowを妨げるのはなぜですか?

21
Julian D.

通常は丸みを帯びたコーナーを持つようにClipStoboundsを設定する必要がありますが、シャドウを維持したいので、シャドウのコーナーを丸くする必要があります。ベジエパスを使ってシャドウパスを設定しようとしましたか? ClipStobounds/MaskStoBoundsをデフォルトの、いいえに保存します。何かのようなもの:

  [[parent layer] setCornerRadius:6.0f];
  [[parent layer] setShadowPath:
             [[UIBezierPath bezierPathWithRoundedRect:[parent bounds] 
                   cornerRadius:6.0f] CGPath]];
 _
5
Matt Long

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)
 _
0
Beyaz

あなたはそれが丸みを帯びたコーナーを持っているように、子供UiImageViewの境界を設定しようとしましたか?おそらくそれはコンテナビューの影を上書きすることはありません。ただの考え、それがうまくいくかどうかわからない。

0
fogelbaby