web-dev-qa-db-ja.com

uiviewの右と下に影を落とす

Uiviewの右と下に影を落とさなければなりません。インターフェイスビルダーでこれを行っていますが、影が上に落ちているのがわかります。異なるサイズを試してみました。

layer.masksToBound=No
layer.shadowOpacity=0.15
layer.shadowRadius=2
layer.shadowOffSet={10,-10}   //Values being set in Interfacebuilder.

それでも、これは上部に影を落とします。

32
Honey

次のコードを試してください、それはあなたを助けるかもしれません

    myView.layer.shadowColor = [UIColor purpleColor].CGColor;
    myView.layer.shadowOffset = CGSizeMake(5, 5);
    myView.layer.shadowOpacity = 1;
    myView.layer.shadowRadius = 1.0;
    myView.layer.maskToBounds = NO;

このコードをテストしましたが、動作し、出力は次のとおりです。

enter image description here

103
Nitin Gohel

こんにちは私は以下のコードを使用しました、それはあなたが望む影を提供します。

 UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds];
_viewShadow.layer.masksToBounds = NO;
_viewShadow.layer.shadowColor = [UIColor blackColor].CGColor;
_viewShadow.layer.shadowOffset = CGSizeMake(10.0f, 5.0f);  /*Change value of X n Y as per your need of shadow to appear to like right bottom or left bottom or so on*/
_viewShadow.layer.shadowOpacity = 0.5f;
_viewShadow.layer.shadowPath = shadowPath.CGPath;

また、masksToBoundsはimpです。これは、ビューの境界よりもさらに広がるサブレイヤーのクリッピングを無効にするためです。 YESにすると、サブレイヤーをクリップするため影が見えなくなります。NOの場合はレイヤーを拡張できます。

6
nikhil84

Swiftでは、CGSizeMakeはもう存在しません。 CGSize(width: 20, height: 10)に変更されました。したがって、shadowOffsetSwiftで次のように設定できます。

myView.layer.shadowOffset = CGSize(width: 20, height: 10)

これらの値が素晴らしい結果をもたらすことがわかりました:

myView.layer.shadowColor = UIColor.black.cgColor
myView.layer.shadowOpacity = 0.25
myView.layer.shadowRadius = 3
myView.layer.shadowOffset = CGSize(width: 1, height: 1) // shadow on the bottom right

enter image description here

2
Frédéric Adda

シャドウオフセットが正しくないと思います。 {10、10}のようになります:

[layer setShadowOffset:CGSizeMake( 10 , 10 ) ];
0
Gaurav Singh